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