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

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

Подготовьте runner image с Codex CLI, затем запускайте provider: codex в step-level или root-level container. ChatGPT login работает, если контейнер читает file-backed CODEX_HOME; для API key runs используйте CODEX_API_KEY.

Проверка Codex login в Docker
steps:
  - id: codex_login_status
    action: harness.run
    container:
      image: dagu-codex-runner:local
      pull_policy: never
      working_dir: /workspace
      volumes:
        - .:/workspace:ro
        - ${HOME}/.codex:/codex-home
      env:
        - CODEX_HOME=/codex-home
    with:
      provider: shell
      prompt: |
        set -eu
        codex --version
        codex login status

Использует публичный базовый образ ghcr.io/openai/codex-universal.

Проверяет codex --version и login status до вызовов модели.

Поддерживает mounted CODEX_HOME для ChatGPT subscription login.

Поддерживает CODEX_API_KEY для non-interactive codex exec.

01

Runner image

Установите Codex в runner image и очистите entrypoint базового образа, чтобы Dagu управлял командой. Перед использованием в DAG должна проходить проверка версии.

Dockerfile
FROM ghcr.io/openai/codex-universal:latest

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

ENV CODEX_NON_INTERACTIVE=1 \
    CODEX_INSTALL_DIR=/usr/local/bin

RUN curl -fsSL https://chatgpt.com/codex/install.sh | sh
RUN codex --version

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

ChatGPT subscription auth

Если host CLI уже залогинен через ChatGPT и credentials сохранены в файлах, смонтируйте этот Codex home в отдельный путь и задайте CODEX_HOME внутри контейнера.

  • Не монтируйте поверх /root/.codex в этом образе: там лежит cache standalone package.
  • Если host использует OS keychain, создайте отдельный file-backed CODEX_HOME для Dagu worker.
  • auth.json содержит access tokens и должен считаться секретом.
03

API-key run

Для automation без ChatGPT login передавайте CODEX_API_KEY только в harness step, который запускает Codex.

Step-level Codex run
steps:
  - id: codex_review
    action: harness.run
    container:
      image: dagu-codex-runner:local
      pull_policy: never
      working_dir: /workspace
      volumes:
        - .:/workspace:ro
      env:
        - CODEX_API_KEY=${CODEX_API_KEY}
    with:
      provider: codex
      prompt: |
        Review this repository and summarize the highest-risk issues.
04

Container scope

Используйте step-level container, если credential нужен только Codex. Root-level container нужен только когда command шаги и Codex должны делить toolchain и workspace.