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_TOOLCHAIN2728# ===== BUILD target version ======29FROM rust-builder as builder-unique-target3031ARG PROFILE=release32ARG FEATURE=33ARG BRANCH=34ARG REPO_URL=3536RUN mkdir /unique_parachain37WORKDIR /unique_parachain3839RUN git clone $REPO_URL -b $BRANCH . && \40 cargo build --features=$FEATURE --$PROFILE4142# ===== BUILD POLKADOT =====43FROM rust-builder as builder-polkadot4445ARG POLKADOT_BUILD_BRANCH=46ENV POLKADOT_BUILD_BRANCH $POLKADOT_BUILD_BRANCH4748RUN mkdir /unique_parachain49WORKDIR /unique_parachain5051RUN git clone -b $POLKADOT_BUILD_BRANCH --depth 1 https://github.com/paritytech/polkadot.git && \52 cd polkadot && \53 cargo build --release5455# ===== BUILD CHAINQL =====56FROM rust-builder as builder-chainql5758RUN mkdir chainql59WORKDIR /chainql6061RUN git clone --depth 1 https://github.com/CertainLach/chainql.git . && \62 cargo build --release6364# ===== RUN ======6566FROM ubuntu:20.046768ARG RUNTIME=69ENV RUNTIME $RUNTIME7071RUN apt-get -y update && \72 apt-get -y install curl git && \73 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \74 export NVM_DIR="$HOME/.nvm" && \75 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \76 nvm install v16.16.0 && \77 nvm use v16.16.07879RUN git clone https://github.com/uniquenetwork/polkadot-launch -b feature/parachain-forking8081RUN export NVM_DIR="$HOME/.nvm" && \82 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \83 cd /polkadot-launch && \84 npm install --global yarn && \85 yarn install8687RUN echo "$RUNTIME"8889COPY --from=builder-unique-target /unique_parachain/target/release/unique-collator /unique-chain/target/release/9091COPY --from=builder-polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/9293COPY --from=builder-chainql /chainql/target/release/chainql /chainql/target/release/9495ARG FORK_FROM=96ENV FORK_FROM=$FORK_FROM97CMD export NVM_DIR="$HOME/.nvm" PATH="$PATH:/chainql/target/release" FORK_FROM && \98 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \99 cd /polkadot-launch && \100 yarn start launch-config.json101102