1# ===== Rust builder =====2FROM ubuntu:20.04 as rust-builder3LABEL maintainer="Unique.Network"45ARG RUST_TOOLCHAIN=67ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN89ENV CARGO_HOME="/cargo-home"10ENV PATH="/cargo-home/bin:$PATH"11ENV TZ=UTC12RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone1314RUN apt-get update && \15 apt-get install -y curl cmake pkg-config libssl-dev git clang && \16 apt-get clean && \17 rm -r /var/lib/apt/lists/*1819RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none2021RUN rustup toolchain uninstall $(rustup toolchain list) && \22 rustup toolchain install $RUST_TOOLCHAIN && \23 rustup default $RUST_TOOLCHAIN && \24 rustup target list --installed && \25 rustup show26RUN rustup target add wasm32-unknown-unknown --toolchain $RUST_TOOLCHAIN2728RUN mkdir /unique_parachain29WORKDIR /unique_parachain3031# ===== BUILD target version ======32FROM rust-builder as builder-unique-target3334ARG PROFILE=release35ARG FEATURE=36ARG BRANCH=37ARG REPO_URL=3839COPY . /unique_parachain40WORKDIR /unique_parachain4142RUN cargo build --features=$FEATURE --$PROFILE4344# ===== BUILD POLKADOT =====45FROM rust-builder as builder-polkadot4647ARG POLKADOT_BUILD_BRANCH=48ENV POLKADOT_BUILD_BRANCH $POLKADOT_BUILD_BRANCH4950WORKDIR /unique_parachain5152RUN git clone -b $POLKADOT_BUILD_BRANCH --depth 1 https://github.com/paritytech/polkadot.git && \53 cd polkadot && \54 cargo build --release5556# ===== BUILD CHAINQL =====57FROM rust-builder as builder-chainql5859RUN mkdir chainql60WORKDIR /chainql6162RUN git clone --depth 1 https://github.com/CertainLach/chainql.git . && \63 cargo build --release6465# ===== RUN ======6667FROM ubuntu:20.046869ARG RUNTIME=70ENV RUNTIME $RUNTIME7172RUN apt-get -y update && \73 apt-get -y install curl git && \74 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \75 export NVM_DIR="$HOME/.nvm" && \76 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \77 nvm install v16.16.0 && \78 nvm use v16.16.07980RUN git clone https://github.com/uniquenetwork/polkadot-launch -b feature/parachain-forking8182RUN export NVM_DIR="$HOME/.nvm" && \83 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \84 cd /polkadot-launch && \85 npm install --global yarn && \86 yarn install8788RUN echo "$RUNTIME"8990COPY --from=builder-unique-target /unique_parachain/target/release/unique-collator /unique-chain/target/release/9192COPY --from=builder-polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/9394COPY --from=builder-chainql /chainql/target/release/chainql /chainql/target/release/9596ARG FORK_FROM=97ENV FORK_FROM=$FORK_FROM98CMD export NVM_DIR="$HOME/.nvm" PATH="$PATH:/chainql/target/release" FORK_FROM && \99 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \100 cd /polkadot-launch && \101 yarn start launch-config.json102103