11# # Dockerfile for devcontainer
22
3- FROM mcr.microsoft.com/devcontainers/base:debian AS base
4-
3+ FROM ghcr.io/hyperlight-dev/hyperlight-devcontainer:latest
54ARG USER=vscode
65ARG GROUP=vscode
76
8- ENV HOME= "/home/${USER}"
9- ENV PATH= "$HOME/.cargo/bin:$PATH"
7+ # use root to install tools then switch back to vscode user
8+ USER root
109
1110# Install dependencies
1211RUN apt-get update \
1312 && apt-get -y install \
14- build-essential \
15- cmake \
16- curl \
17- gdb \
18- git \
19- gnupg \
20- gnuplot \
21- lsb-release \
22- make \
23- software-properties-common \
24- sudo \
25- wget \
2613 netcat-openbsd
2714
2815ARG GCC_VERSION=12
@@ -31,51 +18,21 @@ RUN apt-get install -y g++-multilib \
3118 && apt-get install -y libgcc-${GCC_VERSION}-dev \
3219 && apt-get install -y lib32gcc-${GCC_VERSION}-dev
3320
34- ARG LLVM_VERSION=17
35-
36- # Install llvm
37- RUN wget https://apt.llvm.org/llvm.sh \
38- && chmod +x ./llvm.sh \
39- && sudo ./llvm.sh ${LLVM_VERSION} all \
40- && sudo ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/clang-cl /usr/bin/clang-cl \
41- && sudo ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/llvm-lib /usr/bin/llvm-lib \
42- && sudo ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/lld-link /usr/bin/lld-link \
43- && sudo ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/llvm-ml /usr/bin/llvm-ml \
44- && sudo ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/ld.lld /usr/bin/ld.lld \
45- && sudo ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/clang /usr/bin/clang
46-
47- FROM base AS dev
48-
49- # Make sure the devcontainer user has sudo access
50- RUN chown -R "${USER}:${GROUP}" /home/${USER} \
51- && echo "${USER} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
52-
53- # Persist bash history
54- RUN SNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
55- && mkdir /commandhistory \
56- && touch /commandhistory/.bash_history \
57- && chown -R "${USER}" /commandhistory \
58- && echo "$SNIPPET" >> "/home/${USER}/.bashrc"
59- # Install python3
6021ARG WASI_SDK_VERSION_FULL=20.0
6122ARG WASI_SDK_VERSION_MAJOR=${WASI_SDK_VERSION_FULL%%.*}
23+
6224# Install wasi-sdk
6325RUN wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION_MAJOR}/wasi-sdk-${WASI_SDK_VERSION_FULL}-linux.tar.gz \
6426 && tar xvf wasi-sdk-${WASI_SDK_VERSION_FULL}-linux.tar.gz \
6527 && rm wasi-sdk-${WASI_SDK_VERSION_FULL}-linux.tar.gz \
6628 && mv /wasi-sdk-${WASI_SDK_VERSION_FULL} /opt/wasi-sdk
6729
6830USER $USER
69-
7031ARG RUST_TOOLCHAIN=1.82.0
7132
72- # Install rust
73- RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \
74- && rustup default ${RUST_TOOLCHAIN} \
75- && rustup target add x86_64-unknown-linux-gnu \
76- && rustup target add x86_64-unknown-none \
77- && rustup target add x86_64-pc-windows-msvc \
78- && rustup toolchain add nightly-x86_64-unknown-linux-gnu \
79- && cargo install just \
33+ # Install rust and component tools
34+ RUN rustup default ${RUST_TOOLCHAIN} \
8035 && cargo install --locked wasm-tools \
81- && cargo install wkg
36+ && cargo install wkg \
37+ && cargo install wac-cli \
38+ && cargo install cargo-component --locked
0 commit comments