Slim down Dockerfile to aarch64-only pre-built binaries
cargo install was slow and required the Rust toolchain. All four
CLI tools now download from GitHub releases, and the multi-arch
case statements are gone since we only target aarch64.
Assisted-by: Claude Opus 4.6 via pi
diff --git a/assets/Dockerfile b/assets/Dockerfile
index d499662..2dab9c3 100644
--- a/assets/Dockerfile
+++ b/assets/Dockerfile
@@ -1,7 +1,5 @@
FROM node:24-trixie-slim
-ARG TARGETARCH
-
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
@@ -14,40 +12,18 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* \
&& ln -sf /usr/bin/fdfind /usr/bin/fd
-ARG DOTSLASH_VERSION=0.5.8
-RUN case "${TARGETARCH}" in \
- amd64) DS_ARCH="x86_64" ;; \
- arm64) DS_ARCH="aarch64" ;; \
- *) echo "unsupported architecture: ${TARGETARCH}" && exit 1 ;; \
- esac && \
- curl -fsSL "https://github.com/facebook/dotslash/releases/download/v${DOTSLASH_VERSION}/dotslash-linux-musl.${DS_ARCH}.tar.gz" \
- | tar xz -C /usr/local/bin dotslash
-
-ARG DIFFTASTIC_VERSION=0.68.0
-RUN case "${TARGETARCH}" in \
- amd64) DFT_TARGET="x86_64-unknown-linux-musl" ;; \
- arm64) DFT_TARGET="aarch64-unknown-linux-gnu" ;; \
- *) echo "unsupported architecture: ${TARGETARCH}" && exit 1 ;; \
- esac && \
- curl -fsSL "https://github.com/Wilfred/difftastic/releases/download/${DIFFTASTIC_VERSION}/difft-${DFT_TARGET}.tar.gz" \
+RUN curl -fsSL "https://github.com/Wilfred/difftastic/releases/latest/download/difft-aarch64-unknown-linux-gnu.tar.gz" \
| tar xz -C /usr/local/bin difft
-ARG JJ_VERSION=0.39.0
-RUN case "${TARGETARCH}" in \
- amd64) JJ_ARCH="x86_64" ;; \
- arm64) JJ_ARCH="aarch64" ;; \
- *) echo "unsupported architecture: ${TARGETARCH}" && exit 1 ;; \
- esac && \
- curl -fsSL "https://github.com/jj-vcs/jj/releases/download/v${JJ_VERSION}/jj-v${JJ_VERSION}-${JJ_ARCH}-unknown-linux-musl.tar.gz" \
- | tar xz --strip-components=0 -C /usr/local/bin ./jj
-
-RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --profile minimal
-ENV PATH="/root/.cargo/bin:${PATH}"
+RUN curl -fsSL "https://github.com/facebook/dotslash/releases/latest/download/dotslash-linux-musl.aarch64.tar.gz" \
+ | tar xz -C /usr/local/bin dotslash
-RUN cargo install --git https://github.com/kejadlen/ranger.git --locked
+RUN JJ_VERSION=$(curl -s https://api.github.com/repos/jj-vcs/jj/releases/latest | jq -r .tag_name) && \
+ curl -fsSL "https://github.com/jj-vcs/jj/releases/download/${JJ_VERSION}/jj-${JJ_VERSION}-aarch64-unknown-linux-musl.tar.gz" \
+ | tar xz --strip-components=0 -C /usr/local/bin ./jj
-RUN jj config set --user user.name "ramekin" && \
- jj config set --user user.email "ramekin@example.com"
+RUN curl -fsSL "https://github.com/kejadlen/ranger/releases/latest/download/ranger-aarch64-unknown-linux-gnu.tar.gz" \
+ | tar xz -C /usr/local/bin ranger
RUN npm install -g @mariozechner/pi-coding-agent