1# ===== Rust builder =====2FROM ubuntu:20.04 as rust-builder3LABEL maintainer="Unique.Network"45ARG RUST_TOOLCHAIN6ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN7ENV CARGO_HOME="/cargo-home"8ENV PATH="/cargo-home/bin:$PATH"9ENV TZ=UTC10RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone1112RUN apt-get update && \13 apt-get install -y curl cmake pkg-config libssl-dev git clang llvm libudev-dev protobuf-compiler && \14 apt-get clean && \15 rm -r /var/lib/apt/lists/*1617RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none1819RUN rustup toolchain uninstall $(rustup toolchain list) && \20 rustup toolchain install $RUST_TOOLCHAIN && \21 rustup default $RUST_TOOLCHAIN && \22 rustup target list --installed && \23 rustup show24RUN rustup target add wasm32-unknown-unknown --toolchain $RUST_TOOLCHAIN2526RUN mkdir /unique_parachain27WORKDIR /unique_parachain2829# ===== BUILD ======30FROM rust-builder as builder-unique3132ARG BRANCH33ARG PROFILE=release3435WORKDIR /unique_parachain36#COPY . .3738RUN git clone -b ${BRANCH} https://github.com/UniqueNetwork/unique-chain.git . && \39# cd unique-chain && \40 cargo build --features=quartz-runtime --$PROFILE4142# ===== RUN ======43FROM ubuntu:20.044445ARG POLKADOT_LAUNCH_BRANCH46ARG LAUNCH_CONFIG_FILE47ARG POLKADOT_BUILD_BRANCH48ARG MOONRIVER_BUILD_BRANCH49ARG STATEMINE_BUILD_BRANCH50ARG KARURA_BUILD_BRANCH51ENV POLKADOT_LAUNCH_BRANCH $POLKADOT_LAUNCH_BRANCH52ENV LAUNCH_CONFIG_FILE $LAUNCH_CONFIG_FILE5354RUN apt-get -y update && \55 apt-get -y install curl git && \56 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \57 export NVM_DIR="$HOME/.nvm" && \58 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \59 nvm install v16.16.0 && \60 nvm use v16.16.06162RUN git clone https://github.com/uniquenetwork/polkadot-launch -b $POLKADOT_LAUNCH_BRANCH6364RUN export NVM_DIR="$HOME/.nvm" && \65 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \66 cd /polkadot-launch && \67 npm install --global yarn && \68 yarn install6970COPY --from=builder-unique /unique_parachain/.docker/additional/xcm-rococo/launch-config-xcm-quartz-rococo.json /polkadot-launch/71COPY --from=builder-unique /unique_parachain/.docker/xcm-config/5validators.jsonnet /polkadot-launch/5validators.jsonnet72COPY --from=builder-unique /unique_parachain/.docker/xcm-config/minBondFix.jsonnet /polkadot-launch/minBondFix.jsonnet7374COPY --from=builder-unique /unique_parachain/target/release/unique-collator /unique-chain/target/release/75COPY --from=uniquenetwork/builder-polkadot:${POLKADOT_BUILD_BRANCH} /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/76COPY --from=uniquenetwork/builder-moonbeam:${MOONRIVER_BUILD_BRANCH} /unique_parachain/moonbeam/target/release/moonbeam /moonbeam/target/release/77COPY --from=uniquenetwork/builder-cumulus:${STATEMINE_BUILD_BRANCH} /unique_parachain/cumulus/target/release/polkadot-parachain /cumulus/target/release/cumulus78COPY --from=uniquenetwork/builder-acala:${KARURA_BUILD_BRANCH} /unique_parachain/Acala/target/production/acala /acala/target/release/79COPY --from=uniquenetwork/builder-chainql:latest /chainql/target/release/chainql /chainql/target/release/8081EXPOSE 984482EXPOSE 994483EXPOSE 994684EXPOSE 994785EXPOSE 99488687CMD export NVM_DIR="$HOME/.nvm" PATH="$PATH:/chainql/target/release" && \88 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \89 cd /polkadot-launch && \90 yarn start ${LAUNCH_CONFIG_FILE}