# syntax=docker/dockerfile:1 ARG UBUNTU_VERSION=26.04 FROM ubuntu:${UBUNTU_VERSION} ARG OPENCODE_VERSION=1.18.32 ARG NODE_VERSION=24.21.0 ENV DEBIAN_FRONTEND=noninteractive \ HOME=/home/dev \ EDITOR=nvim \ VISUAL=nvim \ PIP_CACHE_DIR=/home/dev/.cache/pip \ NPM_CONFIG_CACHE=/home/dev/.npm SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN apt-get update \ && apt-get upgrade -y \ && apt-get install -y --no-install-recommends \ bash \ ca-certificates \ curl \ wget \ git \ openssh-client \ neovim \ jq \ less \ zip \ unzip \ tar \ gzip \ procps \ ripgrep \ fd-find \ tree \ build-essential \ pkg-config \ python3 \ python3-pip \ python3-venv \ python3-dev \ openjdk-11-jdk \ openjdk-17-jdk \ maven \ locales \ xz-utils \ file \ util-linux \ # && rm -rf /var/lib/apt/lists/* \ && update-alternatives --set java /usr/lib/jvm/java-17-openjdk-amd64/bin/java \ && update-alternatives --set javac /usr/lib/jvm/java-17-openjdk-amd64/bin/javac \ && echo 'en_US.UTF-8 UTF-8' > /etc/locale.gen \ && locale-gen \ && useradd --create-home --shell /bin/bash dev \ && mkdir -p /workspace /home/dev/.config/opencode /home/dev/.local/share/opencode \ /home/dev/.cache/opencode /home/dev/.cache/pip /home/dev/.npm /home/dev/.m2 \ && chown -R dev:dev /workspace /home/dev 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 COPY entrypoint.sh /usr/local/bin/opencode-dev-entrypoint RUN chmod +x /usr/local/bin/opencode-dev-entrypoint WORKDIR /workspace ENTRYPOINT ["/usr/local/bin/opencode-dev-entrypoint"] CMD ["bash"]