1
1
# # Dockerfile for devcontainer
2
2
3
- FROM mcr.microsoft.com/devcontainers/base:debian AS base
4
-
3
+ FROM ghcr.io/hyperlight-dev/hyperlight-devcontainer:latest
5
4
ARG USER=vscode
6
5
ARG GROUP=vscode
7
6
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
10
9
11
10
# Install dependencies
12
11
RUN apt-get update \
13
12
&& 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 \
26
13
netcat-openbsd
27
14
28
15
ARG GCC_VERSION=12
@@ -31,51 +18,21 @@ RUN apt-get install -y g++-multilib \
31
18
&& apt-get install -y libgcc-${GCC_VERSION}-dev \
32
19
&& apt-get install -y lib32gcc-${GCC_VERSION}-dev
33
20
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
60
21
ARG WASI_SDK_VERSION_FULL=20.0
61
22
ARG WASI_SDK_VERSION_MAJOR=${WASI_SDK_VERSION_FULL%%.*}
23
+
62
24
# Install wasi-sdk
63
25
RUN wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION_MAJOR}/wasi-sdk-${WASI_SDK_VERSION_FULL}-linux.tar.gz \
64
26
&& tar xvf wasi-sdk-${WASI_SDK_VERSION_FULL}-linux.tar.gz \
65
27
&& rm wasi-sdk-${WASI_SDK_VERSION_FULL}-linux.tar.gz \
66
28
&& mv /wasi-sdk-${WASI_SDK_VERSION_FULL} /opt/wasi-sdk
67
29
68
30
USER $USER
69
-
70
31
ARG RUST_TOOLCHAIN=1.82.0
71
32
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} \
80
35
&& 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