Skip to content

Commit f16a943

Browse files
chat recommended changes
1 parent 7f4756d commit f16a943

File tree

1 file changed

+34
-31
lines changed

1 file changed

+34
-31
lines changed

Dockerfile

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ FROM ubuntu:24.04
22

33
ENV LANG="C.UTF-8"
44
ENV HOME=/root
5+
ENV DEBIAN_FRONTEND=noninteractive
56

67
### BASE ###
78

89
RUN apt-get update \
9-
&& apt-get upgrade -y \
10-
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
10+
&& apt-get install -y --no-install-recommends \
1111
binutils=2.42-* \
1212
sudo=1.9.* \
1313
build-essential=12.10* \
@@ -18,7 +18,7 @@ RUN apt-get update \
1818
gettext=0.21-* \
1919
git=1:2.43.* \
2020
git-lfs=3.4.* \
21-
gnupg2=2.4.* \
21+
gnupg=2.4.* \
2222
inotify-tools=3.22.* \
2323
iputils-ping=3:20240117-* \
2424
jq=1.7.* \
@@ -75,10 +75,14 @@ RUN apt-get update \
7575

7676
### MISE ###
7777

78-
RUN install -dm 755 /etc/apt/keyrings \
79-
&& curl -fsSL https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | tee /etc/apt/keyrings/mise-archive-keyring.gpg 1> /dev/null \
80-
&& echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg] https://mise.jdx.dev/deb stable main" | tee /etc/apt/sources.list.d/mise.list \
81-
&& apt-get update && apt-get install -y --no-install-recommends mise/stable \
78+
RUN install -dm 0755 /etc/apt/keyrings \
79+
&& curl -fsSL https://mise.jdx.dev/gpg-key.pub \
80+
| gpg --batch --yes --dearmor -o /etc/apt/keyrings/mise-archive-keyring.gpg \
81+
&& chmod 0644 /etc/apt/keyrings/mise-archive-keyring.gpg \
82+
&& echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg] https://mise.jdx.dev/deb stable main" \
83+
> /etc/apt/sources.list.d/mise.list \
84+
&& apt-get update \
85+
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends mise/stable \
8286
&& rm -rf /var/lib/apt/lists/* \
8387
&& echo 'eval "$(mise activate bash)"' >> /etc/profile \
8488
&& mise settings set experimental true \
@@ -89,17 +93,16 @@ ENV PATH=$HOME/.local/share/mise/shims:$PATH
8993

9094
### LLVM ###
9195

92-
RUN apt-get update && apt-get install -y --no-install-recommends \
93-
cmake=3.28.* \
94-
ccache=4.9.* \
95-
ninja-build=1.11.* \
96-
nasm=2.16.* \
97-
yasm=1.3.* \
98-
gawk=1:5.2.* \
99-
lsb-release=12.0-* \
100-
gnupg=2.4.* \
101-
&& rm -rf /var/lib/apt/lists/* \
102-
&& bash -c "$(curl -fsSL https://apt.llvm.org/llvm.sh)"
96+
RUN install -dm 0755 /etc/apt/keyrings \
97+
&& curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key \
98+
| gpg --batch --yes --dearmor -o /etc/apt/keyrings/llvm.gpg \
99+
&& chmod 0644 /etc/apt/keyrings/llvm.gpg \
100+
&& . /etc/os-release \
101+
&& echo "deb [signed-by=/etc/apt/keyrings/llvm.gpg] https://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-20 main" \
102+
> /etc/apt/sources.list.d/llvm.list \
103+
&& apt-get update \
104+
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends clang-20 lld-20 lldb-20 llvm-20 \
105+
&& rm -rf /var/lib/apt/lists/*
103106

104107
### PYTHON ###
105108

@@ -110,15 +113,15 @@ ARG PYTHON_VERSION=3.11.12
110113
ENV PYENV_ROOT=/root/.pyenv
111114
ENV PATH=$PYENV_ROOT/bin:$PATH
112115
ENV PYTHON_VERSIONS="3.10 3.11.12 3.12 3.13"
113-
# hadolint ignore=SC2016,DL3003
114116
RUN git -c advice.detachedHead=0 clone --branch "$PYENV_VERSION" --depth 1 https://github.com/pyenv/pyenv.git "$PYENV_ROOT" \
115117
&& echo 'export PYENV_ROOT="$HOME/.pyenv"' >> /etc/profile \
116118
&& echo 'export PATH="$$PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH"' >> /etc/profile \
117119
&& echo 'eval "$(pyenv init - bash)"' >> /etc/profile \
118120
&& cd "$PYENV_ROOT" && src/configure && make -C src \
119121
&& pyenv install $PYTHON_VERSIONS \
120122
&& pyenv global "$PYTHON_VERSION"
121-
# Install pipx for common global package managers (e.g. poetry)
123+
124+
# Install pipx for common global package managers (e.g. poetry)
122125
ENV PIPX_BIN_DIR=/root/.local/bin
123126
ENV PATH=$PIPX_BIN_DIR:$PATH
124127
RUN apt-get update && apt-get install -y --no-install-recommends pipx=1.4.* \
@@ -144,7 +147,7 @@ ENV COREPACK_DEFAULT_TO_LATEST=0
144147
ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0
145148
ENV COREPACK_ENABLE_AUTO_PIN=0
146149
ENV COREPACK_ENABLE_STRICT=0
147-
# hadolint ignore=SC1091
150+
148151
RUN git -c advice.detachedHead=0 clone --branch "$NVM_VERSION" --depth 1 https://github.com/nvm-sh/nvm.git "$NVM_DIR" \
149152
&& echo 'source $NVM_DIR/nvm.sh' >> /etc/profile \
150153
&& echo "prettier\neslint\ntypescript" > $NVM_DIR/default-packages \
@@ -176,26 +179,26 @@ ARG SWIFT_VERSIONS="6.1 5.10.1"
176179
RUN for v in $SWIFT_VERSIONS; do mise install "swift@${v}"; done \
177180
&& mise use --global "swift@${SWIFT_VERSIONS%% *}"
178181

182+
### RUST ###
183+
184+
ARG RUST_VERSIONS="1.89.0 1.88.0 1.87.0 1.86.0 1.85.1 1.84.1 1.83.0"
185+
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \
186+
&& . "$HOME/.cargo/env" \
187+
&& echo 'source $HOME/.cargo/env' >> /etc/profile \
188+
&& rustup install $RUST_VERSIONS \
189+
&& rustup default ${RUST_VERSIONS%% *}
190+
191+
179192
### RUBY ###
180193

181194
ARG RUBY_VERSIONS="3.2.3 3.3.8 3.4.4"
182195
RUN apt-get update && apt-get install -y --no-install-recommends \
183196
libyaml-dev=0.2.* \
184197
libgmp-dev=2:6.3.* \
185-
rustc=1.75.* \
186198
&& rm -rf /var/lib/apt/lists/* \
187199
&& for v in $RUBY_VERSIONS; do mise install "ruby@${v}"; done \
188200
&& mise use --global "ruby@${RUBY_VERSIONS%% *}"
189201

190-
### RUST ###
191-
192-
ARG RUST_VERSIONS="1.89.0 1.88.0 1.87.0 1.86.0 1.85.1 1.84.1 1.83.0"
193-
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \
194-
&& . "$HOME/.cargo/env" \
195-
&& echo 'source $HOME/.cargo/env' >> /etc/profile \
196-
&& rustup install $RUST_VERSIONS \
197-
&& rustup default ${RUST_VERSIONS%% *}
198-
199202
### C++ ###
200203
# gcc is already installed via apt-get above, so these are just additional linters, etc.
201204
RUN pipx install cpplint==2.0.* clang-tidy==20.1.* clang-format==20.1.* cmakelang==0.6.*

0 commit comments

Comments
 (0)