1# ===== Rust builder =====2FROM phusion/baseimage:focal-1.0.0 as rust-builder3LABEL maintainer="Unique.Network"45ARG RUST_TOOLCHAIN=nightly-2021-06-286#ARG RUST_C=1.55.0-nightly7ARG POLKA_VERSION=v0.9.108ARG NFT_BRANCH=develop910#ARG USER=***11#ARG PASS=***121314ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN15#ENV RUST_C $RUST_C16ENV POLKA_VERSION $POLKA_VERSION17ENV NFT_BRANCH $NFT_BRANCH181920#RUN echo $RUST_TOOLCHAIN21#RUN echo $RUST_C22#RUN echo $POLKA_VERSION23#RUN echo $NFT_BRANCH2425ARG PROFILE=release2627ENV CARGO_HOME="/cargo-home"28ENV PATH="/cargo-home/bin:$PATH"2930RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none3132RUN apt-get update && \33 apt-get dist-upgrade -y -o Dpkg::Options::="--force-confold" && \34 apt-get install -y cmake pkg-config libssl-dev git clang3536RUN rustup toolchain uninstall $(rustup toolchain list) && \37 rustup toolchain install $RUST_TOOLCHAIN && \38 rustup default $RUST_TOOLCHAIN && \39 rustup target list --installed && \40 rustup show41RUN rustup target add wasm32-unknown-unknown --toolchain $RUST_TOOLCHAIN4243RUN cargo install cargo-chef4445RUN mkdir nft_parachain46WORKDIR /nft_parachain4748# ===== Chef =====49FROM rust-builder as chef5051COPY . .52RUN cargo chef prepare --recipe-path recipe.json5354# ===== BUILD ======55FROM rust-builder as builder5657RUN mkdir nft_parachain58WORKDIR /nft_parachain5960COPY --from=chef /nft_parachain/recipe.json recipe.json61RUN cargo chef cook --release --recipe-path recipe.json6263COPY . .64RUN cargo build "--$PROFILE"65 # && \66 # cargo test6768# ===== BUILD POLKADOT =====69FROM rust-builder as builder-polkadot7071RUN mkdir nft_parachain72WORKDIR /nft_parachain7374RUN git clone -b $POLKA_VERSION --depth 1 https://github.com/paritytech/polkadot.git && \75 cd polkadot && \76 git tag -n && \77 cargo build --release7879# ===== RUN ======8081FROM phusion/baseimage:focal-1.0.08283ARG PROFILE=release8485RUN apt-get -y update && \86 apt-get -y upgrade && \87 apt-get -y install curl git && \88 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \89 export NVM_DIR="$HOME/.nvm" && \90 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \91 nvm install v15.5.0 && \92 nvm use v15.5.09394RUN git clone https://github.com/paritytech/polkadot-launch.git9596RUN export NVM_DIR="$HOME/.nvm" && \97 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \98 cd /polkadot-launch && \99 npm install --global yarn && \100 yarn101102COPY --from=builder /nft_parachain/target/$PROFILE/nft /nft_private/target/$PROFILE/103COPY --from=builder-polkadot /nft_parachain/polkadot/target/$PROFILE/polkadot /polkadot/target/$PROFILE/104105CMD export NVM_DIR="$HOME/.nvm" && \106 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \107 cd /polkadot-launch && \108 yarn start launch-config.json