1# ===== Rust builder =====2FROM phusion/baseimage:focal-1.1.0 as rust-builder3LABEL maintainer="Unique.Network"45ARG RUST_TOOLCHAIN=nightly-2022-04-076#ARG RUST_C=1.62.0-nightly7ARG POLKA_VERSION=release-v0.9.238ARG UNIQUE_BRANCH=develop910#ARG USER=***11#ARG PASS=***121314ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN15#ENV RUST_C $RUST_C16ENV POLKA_VERSION $POLKA_VERSION17ENV UNIQUE_BRANCH $UNIQUE_BRANCH181920#RUN echo $RUST_TOOLCHAIN21#RUN echo $RUST_C22#RUN echo $POLKA_VERSION23#RUN echo $UNIQUE_BRANCH2425ENV CARGO_HOME="/cargo-home"26ENV PATH="/cargo-home/bin:$PATH"2728RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none2930RUN apt-get update && \31 apt-get dist-upgrade -y -o Dpkg::Options::="--force-confold" && \32 apt-get install -y cmake pkg-config libssl-dev git clang3334RUN rustup toolchain uninstall $(rustup toolchain list) && \35 rustup toolchain install $RUST_TOOLCHAIN && \36 rustup default $RUST_TOOLCHAIN && \37 rustup target list --installed && \38 rustup show39RUN rustup target add wasm32-unknown-unknown --toolchain $RUST_TOOLCHAIN4041RUN cargo install cargo-chef4243RUN mkdir unique_parachain44WORKDIR /unique_parachain4546# ===== Chef =====47FROM rust-builder as chef4849COPY . .50RUN cargo chef prepare --recipe-path recipe.json5152# ===== BUILD ======53FROM rust-builder as builder5455RUN mkdir unique_parachain56WORKDIR /unique_parachain5758COPY --from=chef /unique_parachain/recipe.json recipe.json59ARG PROFILE=release60RUN cargo chef cook "--$PROFILE" --recipe-path recipe.json6162COPY . .63RUN cargo build "--$PROFILE"64 # && \65 # cargo test6667# ===== BUILD POLKADOT =====68FROM rust-builder as builder-polkadot6970RUN mkdir unique_parachain71WORKDIR /unique_parachain7273RUN git clone -b $POLKA_VERSION --depth 1 https://github.com/paritytech/polkadot.git && \74 cd polkadot && \75 git tag -n && \76 cargo build --release7778# ===== RUN ======7980FROM phusion/baseimage:focal-1.1.08182ARG PROFILE=release8384RUN apt-get -y update && \85 apt-get -y upgrade && \86 apt-get -y install curl git && \87 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \88 export NVM_DIR="$HOME/.nvm" && \89 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \90 nvm install v15.5.0 && \91 nvm use v15.5.09293RUN git clone https://github.com/paritytech/polkadot-launch9495RUN export NVM_DIR="$HOME/.nvm" && \96 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \97 cd /polkadot-launch && \98 npm install --global yarn && \99 yarn100101COPY --from=builder /unique_parachain/target/$PROFILE/unique-collator /unique-chain/target/$PROFILE/102COPY --from=builder-polkadot /unique_parachain/polkadot/target/$PROFILE/polkadot /polkadot/target/$PROFILE/103104CMD export NVM_DIR="$HOME/.nvm" && \105 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \106 cd /polkadot-launch && \107 yarn start launch-config.json