|
1 | 1 | # |
2 | | -# Docker image to generate deterministic, verifiable builds of Anchor programs. |
3 | | -# This must be run *after* a given ANCHOR_CLI version is published and a git tag |
4 | | -# is released on GitHub. |
| 2 | +# Drift Protocol Dev Container |
5 | 3 | # |
6 | 4 |
|
7 | | -FROM rust:1.75 |
| 5 | +FROM --platform=linux/amd64 rust:1.70.0 |
8 | 6 |
|
9 | 7 | ARG DEBIAN_FRONTEND=noninteractive |
10 | | - |
11 | | -ARG SOLANA_CLI="1.14.7" |
12 | | -ARG ANCHOR_CLI="0.26.0" |
13 | | -ARG NODE_VERSION="v18.16.0" |
| 8 | +ARG SOLANA_CLI="1.16.27" |
| 9 | +ARG ANCHOR_CLI="0.29.0" |
| 10 | +ARG NODE_VERSION="20.18.1" |
14 | 11 |
|
15 | 12 | ENV HOME="/root" |
16 | | -ENV PATH="${HOME}/.cargo/bin:${PATH}" |
17 | | -ENV PATH="${HOME}/.local/share/solana/install/active_release/bin:${PATH}" |
18 | | -ENV PATH="${HOME}/.nvm/versions/node/${NODE_VERSION}/bin:${PATH}" |
19 | | - |
20 | | -# Install base utilities. |
21 | | -RUN mkdir -p /workdir && mkdir -p /tmp && \ |
22 | | - apt-get update -qq && apt-get upgrade -qq && apt-get install -qq \ |
23 | | - build-essential git curl wget jq pkg-config python3-pip \ |
24 | | - libssl-dev libudev-dev |
25 | | - |
26 | | -RUN wget http://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb |
27 | | -RUN dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb |
28 | | - |
29 | | -# Install rust. |
30 | | -RUN curl "https://sh.rustup.rs" -sfo rustup.sh && \ |
31 | | - sh rustup.sh -y && \ |
32 | | - rustup component add rustfmt clippy |
33 | | - |
34 | | -# Install node / npm / yarn. |
35 | | -RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash |
36 | | -ENV NVM_DIR="${HOME}/.nvm" |
37 | | -RUN . $NVM_DIR/nvm.sh && \ |
38 | | - nvm install ${NODE_VERSION} && \ |
39 | | - nvm use ${NODE_VERSION} && \ |
40 | | - nvm alias default node && \ |
41 | | - npm install -g yarn && \ |
42 | | - yarn add ts-mocha |
43 | | - |
44 | | -# Install Solana tools. |
45 | | -RUN sh -c "$(curl -sSfL https://release.solana.com/v${SOLANA_CLI}/install)" |
46 | | - |
47 | | -# Install anchor. |
48 | | -RUN cargo install --git https://github.com/coral-xyz/anchor avm --locked --force |
49 | | -RUN avm install ${ANCHOR_CLI} && avm use ${ANCHOR_CLI} |
50 | | - |
51 | | -RUN solana-keygen new --no-bip39-passphrase |
| 13 | +ENV PATH="/usr/local/cargo/bin:${PATH}" |
| 14 | +ENV PATH="/root/.local/share/solana/install/active_release/bin:${PATH}" |
| 15 | + |
| 16 | +RUN mkdir -p /workdir /tmp && \ |
| 17 | + apt-get update -qq && apt-get upgrade -qq && apt-get install -y --no-install-recommends \ |
| 18 | + build-essential git curl wget jq pkg-config python3-pip xz-utils ca-certificates \ |
| 19 | + libssl-dev libudev-dev bash && \ |
| 20 | + rm -rf /var/lib/apt/lists/* |
| 21 | + |
| 22 | +RUN rustup install 1.78.0 \ |
| 23 | + && rustup component add rustfmt clippy --toolchain 1.78.0 |
| 24 | + |
| 25 | +RUN curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" -o /tmp/node.tar.xz \ |
| 26 | + && tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1 \ |
| 27 | + && rm /tmp/node.tar.xz \ |
| 28 | + && corepack enable \ |
| 29 | + && npm install -g ts-mocha typescript mocha \ |
| 30 | + && node -v && npm -v && yarn -v |
| 31 | + |
| 32 | +# Solana CLI (x86_64 build) |
| 33 | +RUN curl -sSfL "https://github.com/solana-labs/solana/releases/download/v${SOLANA_CLI}/solana-release-x86_64-unknown-linux-gnu.tar.bz2" \ |
| 34 | + | tar -xjC /tmp \ |
| 35 | + && mv /tmp/solana-release/bin/* /usr/local/bin/ \ |
| 36 | + && rm -rf /tmp/solana-release |
| 37 | + |
| 38 | +# Anchor CLI |
| 39 | +RUN cargo install --git https://github.com/coral-xyz/anchor --tag "v${ANCHOR_CLI}" anchor-cli --locked |
| 40 | + |
| 41 | +# Set up Solana key + config for root |
| 42 | +RUN solana-keygen new --no-bip39-passphrase --force \ |
| 43 | + && solana config set --url localhost |
| 44 | + |
| 45 | +RUN apt-get update && apt-get install -y zsh curl git \ |
| 46 | + && sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended \ |
| 47 | + && chsh -s /usr/bin/zsh root |
52 | 48 |
|
53 | 49 | WORKDIR /workdir |
54 | | -#be sure to add `/root/.avm/bin` to your PATH to be able to run the installed binaries |
0 commit comments