2026-03-24 18:53:55 +00:00
|
|
|
FROM debian:bookworm-slim
|
|
|
|
|
|
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
2026-04-18 05:34:46 +00:00
|
|
|
bash curl git jq tmux nodejs npm python3 python3-pip openssh-client ca-certificates age shellcheck procps gosu \
|
2026-04-16 16:21:07 +00:00
|
|
|
&& pip3 install --break-system-packages networkx tomlkit \
|
2026-03-24 18:53:55 +00:00
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
2026-04-01 18:14:18 +00:00
|
|
|
# Pre-built binaries (copied from docker/agents/bin/)
|
|
|
|
|
# SOPS — encrypted data decryption tool
|
2026-04-17 16:08:41 +00:00
|
|
|
# Download sops binary (replaces manual COPY of vendored binary)
|
|
|
|
|
ARG SOPS_VERSION=3.9.4
|
|
|
|
|
RUN curl -fsSL "https://github.com/getsops/sops/releases/download/v${SOPS_VERSION}/sops-v${SOPS_VERSION}.linux.amd64" \
|
|
|
|
|
-o /usr/local/bin/sops && chmod +x /usr/local/bin/sops
|
2026-04-01 18:14:18 +00:00
|
|
|
|
2026-03-28 19:57:19 +00:00
|
|
|
# tea CLI — official Gitea/Forgejo CLI for issue/label/comment operations
|
2026-04-17 16:28:43 +00:00
|
|
|
# Download tea binary (replaces manual COPY of vendored binary)
|
|
|
|
|
ARG TEA_VERSION=0.9.2
|
|
|
|
|
RUN curl -fsSL "https://dl.gitea.com/tea/${TEA_VERSION}/tea-${TEA_VERSION}-linux-amd64" \
|
|
|
|
|
-o /usr/local/bin/tea && chmod +x /usr/local/bin/tea
|
2026-03-28 19:57:19 +00:00
|
|
|
|
2026-04-18 05:34:46 +00:00
|
|
|
# Install Claude Code CLI — agent runtime for all LLM backends (llama, Claude API).
|
|
|
|
|
# The CLI is the execution environment; ANTHROPIC_BASE_URL selects the model provider.
|
|
|
|
|
RUN npm install -g @anthropic-ai/claude-code@2.1.84
|
2026-03-24 18:53:55 +00:00
|
|
|
|
|
|
|
|
# Non-root user
|
|
|
|
|
RUN useradd -m -u 1000 -s /bin/bash agent
|
|
|
|
|
|
2026-04-01 13:51:19 +00:00
|
|
|
# Copy disinto code into the image
|
|
|
|
|
COPY . /home/agent/disinto
|
|
|
|
|
|
2026-04-01 18:28:45 +00:00
|
|
|
COPY docker/agents/entrypoint.sh /entrypoint.sh
|
2026-03-24 18:53:55 +00:00
|
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
|
|
2026-04-08 04:57:57 +00:00
|
|
|
# Entrypoint runs polling loop directly, dropping to agent user via gosu.
|
|
|
|
|
# All scripts execute as the agent user (UID 1000) while preserving env vars.
|
2026-04-15 09:24:05 +00:00
|
|
|
VOLUME /home/agent/data
|
|
|
|
|
VOLUME /home/agent/repos
|
|
|
|
|
|
2026-04-01 13:51:19 +00:00
|
|
|
WORKDIR /home/agent/disinto
|
2026-03-24 18:53:55 +00:00
|
|
|
|
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|