feat: a lot of stuff

This commit is contained in:
Ian
2026-09-30 23:14:15 +02:00
parent a81e2a95b3
commit 34f4c56632
3 changed files with 65 additions and 47 deletions
+31 -24
View File
@@ -3,19 +3,16 @@
ARG UBUNTU_VERSION=26.04
FROM ubuntu:${UBUNTU_VERSION}
ARG OPENCODE_VERSION=1.18.32
ARG NODE_VERSION=24.21.0
ARG DEV_UID=1000
ARG DEV_GID=1000
ENV DEBIAN_FRONTEND=noninteractive \
HOME=/home/dev \
EDITOR=nvim \
VISUAL=nvim \
PIP_CACHE_DIR=/home/dev/.cache/pip \
NPM_CONFIG_CACHE=/home/dev/.npm
# Move the pre-existing ubuntu user/group away from 1000:1000
RUN groupmod --gid 1234 ubuntu \
&& usermod --uid 1234 --gid 1234 ubuntu
ENV DEBIAN_FRONTEND=noninteractive
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# System packages
@@ -56,17 +53,32 @@ RUN apt-get update \
&& update-alternatives --set javac /usr/lib/jvm/java-17-openjdk-amd64/bin/javac \
# && rm -rf /var/lib/apt/lists/*
&& echo 'en_US.UTF-8 UTF-8' > /etc/locale.gen \
&& echo 'root:admin' | chpasswd \
&& locale-gen
# Runtime user
RUN groupadd --gid 1001 dev \
RUN groupadd --gid "${DEV_GID}" dev \
&& useradd \
--uid 1001 \
--gid 1001 \
--uid "${DEV_UID}" \
--gid "${DEV_GID}" \
--create-home \
--shell /bin/bash \
dev
# Node.js + OpenCode
RUN curl -fsSLO \
"https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" \
&& tar -xJf \
"node-v${NODE_VERSION}-linux-x64.tar.xz" \
-C /usr/local \
--strip-components=1 \
&& rm "node-v${NODE_VERSION}-linux-x64.tar.xz" \
&& echo -n "node version: " && node --version \
&& echo -n "npm version: " && npm --version \
&& npm install -g @opencode/cli \
&& echo -n "opencode version: " && opencode --version \
&& npm cache clean --force
# User directories
RUN mkdir -p \
/workspace \
@@ -80,24 +92,19 @@ RUN mkdir -p \
/workspace \
/home/dev
# Node.js + OpenCode
RUN curl -fsSLO \
"https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" \
&& tar -xJf \
"node-v${NODE_VERSION}-linux-x64.tar.xz" \
-C /usr/local \
--strip-components=1 \
&& rm \
"node-v${NODE_VERSION}-linux-x64.tar.xz" \
&& node --version \
&& npm --version \
&& npm install --global "opencode-ai@${OPENCODE_VERSION}" \
&& opencode --version \
&& npm cache clean --force
RUN printf '%s\n' 'shopt -s dotglob' >> /etc/bash.bashrc
# Runtime
USER dev
ENV HOME=/home/dev \
EDITOR=nvim \
VISUAL=nvim \
PIP_CACHE_DIR=/home/dev/.cache/pip \
NPM_CONFIG_CACHE=/home/dev/.npm
RUN echo 'for f in /host-bash/*; do [ -r "$f" ] && source "$f"; done' >> ~/.bashrc
WORKDIR /workspace
ENTRYPOINT ["/usr/local/bin/opencode-dev-entrypoint"]