Files
docker-images/opencode/Dockerfile
T
woggioni 073d105d6d
CI / Build opencode docker images (push) Successful in 5m51s
Switch opencode image to build from source
2026-07-21 21:06:05 +08:00

61 lines
2.8 KiB
Docker

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 \
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"]