ARG BUN_VERSION FROM oven/bun:${BUN_VERSION}-slim AS build ARG OPENCODE_VERSION # RUN --mount=type=cache,target=/var/cache/apk apk update # RUN --mount=type=cache,target=/var/cache/apk apk add python3 make g++ npm zip git RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt update &&\ apt install -y python3 make g++ npm zip git #RUN adduser -D -h /home/builder -u 1126 builder RUN useradd -m -u 1126 builder USER builder WORKDIR /home/builder ADD --chown=builder:builder --keep-git-dir=true git@github.com:anomalyco/opencode.git#v${OPENCODE_VERSION} opencode WORKDIR /home/builder/opencode RUN --mount=type=cache,target=/home/builder/.bun/install/cache,uid=1126 bun install ADD --chown=builder:builder ./build.ts ./packages/opencode/script/build.ts RUN --mount=type=cache,target=/home/builder/.bun/install/cache,uid=1126 ./packages/opencode/script/build.ts FROM archlinux:latest AS release ARG OPENCODE_VERSION COPY mirrorlist /etc/pacman.d/mirrolist RUN pacman-key --init #RUN pacman-key --refresh-keys ADD https://gitea.woggioni.net/api/packages/woggioni/arch/repository.key ./repository.key RUN pacman-key --add repository.key RUN pacman-key --lsign-key 0D28BF66FDB45D18D8EBEE5D4C91DADCD00B3F77 RUN --mount=type=bind,source=pacman-gitea-repository.conf,target=pacman-gitea-repository.conf cat pacman-gitea-repository.conf >> /etc/pacman.conf RUN echo 'PATH DEFAULT=${HOME}/.local/bin:${HOME}/.cargo/bin:/usr/local/bin:/bin' >> /etc/security/pam_env.conf RUN rm repository.key RUN --mount=type=cache,target=/var/cache/pacman pacman -Syu --noconfirm RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed \ xdg-utils rustup rust-analyzer jdtls python-pipx ripgrep git rustup gradle curl sccache openssh \ bash-language-server marksman python-lsp-server vscode-css-languageserver x86_64-unknown-linux-musl-zlib x86_64-unknown-linux-musl-gcc \ vscode-html-languageserver vscode-json-languageserver yaml-language-server base-devel docker docker-buildx less websocat RUN --mount=type=cache,target=/var/cache/pacman pacman -S --noconfirm --needed jdk25-graalvm-bin RUN useradd -m -d /var/lib/opencode opencode RUN mkdir /workspace RUN chown opencode:opencode /workspace USER opencode RUN pipx install pyright RUN pipx install pip-tools USER root COPY --from=build --chown=root:root /home/builder/opencode/packages/opencode/dist/opencode-linux-x64/bin/opencode /usr/bin/opencode ADD --chown=opencode:opencode ./opencode.json /etc/opencode/opencode.json RUN mkdir -p /usr/lib/opencode/addons ADD --chmod=644 https://repo1.maven.org/maven2/org/projectlombok/lombok/1.18.46/lombok-1.18.46.jar /usr/lib/opencode/addons/lombok.jar ENV OPENCODE_CONFIG=/etc/opencode/opencode.json USER opencode WORKDIR /workspace ENTRYPOINT ["opencode"] VOLUME ["/var/lib/opencode", "/workspace"]