OpenCode Docker-песочница

Запускайте OpenCode из Docker-песочницы Dagu.

Non-interactive команда OpenCode называется opencode run. Поместите бинарь opencode и provider credentials в runner container, затем вызывайте provider: opencode из Dagu harness.run.

OpenCode step в Docker
steps:
  - id: opencode_review
    action: harness.run
    container:
      image: dagu-opencode-runner:local
      pull_policy: never
      working_dir: /workspace
      volumes:
        - .:/workspace:ro
        - ${HOME}/.local/share/opencode:/root/.local/share/opencode:ro
    with:
      provider: opencode
      model: anthropic/claude-sonnet-4-5
      prompt: |
        Review this repository and summarize the highest-risk issues.

Устанавливает OpenCode через npm package opencode-ai.

Проверяет opencode --version через Dagu до вызова модели.

Может монтировать ~/.local/share/opencode/auth.json для настроенных providers.

Также может использовать provider-specific environment variables в container.env.

01

Runner image

Установите OpenCode в runner image и проверьте бинарь при build. Пустой entrypoint оставляет управление командой за Dagu.

Dockerfile
FROM node:22-bookworm-slim

RUN apt-get update \
  && apt-get install -y --no-install-recommends ca-certificates git bash \
  && rm -rf /var/lib/apt/lists/*

RUN npm install -g opencode-ai
RUN opencode --version

WORKDIR /workspace
ENTRYPOINT []
CMD ["bash"]
02

Smoke test

Перед mount credentials запустите shell provider, который печатает версию OpenCode и binary path внутри контейнера.

Version check DAG
type: graph

harnesses:
  shell:
    binary: sh
    prefix_args:
      - -c
    prompt_mode: arg

steps:
  - id: opencode_version
    action: harness.run
    container:
      image: dagu-opencode-runner:local
      pull_policy: never
    with:
      provider: shell
      prompt: |
        set -eu
        opencode --version
        command -v opencode
03

Credentials

OpenCode хранит provider login data в ~/.local/share/opencode/auth.json и также читает provider keys из environment или project .env. Монтируйте или передавайте только то, что нужно выбранному provider.

04

Model name

Имена моделей OpenCode имеют формат provider/model. В примере используется anthropic/claude-sonnet-4-5; замените его на модель, доступную в вашей OpenCode provider configuration.