Dockerfile 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. ARG RUST_VERSION=1.66.1
  2. FROM rust:${RUST_VERSION}
  3. RUN apt-get update && apt-get install -qq nodejs npm curl
  4. RUN npm install --global yarn
  5. RUN rustup default ${RUST_VERSION}
  6. ARG SOLANA_VERSION=v1.14.17
  7. RUN curl -sSfL https://release.solana.com/${SOLANA_VERSION}/install > install_solana.sh
  8. RUN sh install_solana.sh
  9. ENV PATH="/root/.local/share/solana/install/active_release/bin:$PATH"
  10. RUN --mount=type=cache,target=target cargo install --git https://github.com/coral-xyz/anchor avm --locked --force --target-dir target
  11. ARG ANCHOR_VERSION=0.27.0
  12. RUN --mount=type=cache,target=target CARGO_TARGET_DIR=target avm install ${ANCHOR_VERSION} && avm use ${ANCHOR_VERSION}
  13. # Trigger Anchor's BPF tools download for caching
  14. RUN anchor init decoy-crate
  15. RUN cd decoy-crate && anchor build
  16. RUN rm -rf decoy-crate
  17. WORKDIR message_buffer
  18. # layer-cache cargo deps
  19. ADD Cargo.toml Cargo.lock ./
  20. ADD programs/message_buffer/Cargo.toml programs/message_buffer/
  21. RUN mkdir -p programs/message_buffer/src && touch programs/message_buffer/src/lib.rs
  22. RUN cargo fetch --locked
  23. ADD . .
  24. RUN --mount=type=cache,target=target anchor build -p message_buffer && cp -r target target_tmp
  25. RUN rm -rf target && mv target_tmp target