Codex Docker-Sandbox

Codex aus einer Dagu Docker-Sandbox ausfuehren.

Nutze ein Runner Image mit Codex CLI und lasse Dagu provider: codex in einem step-level oder root-level container ausfuehren. ChatGPT Login funktioniert, wenn der Container ein file-backed CODEX_HOME lesen kann; API-key runs nutzen CODEX_API_KEY.

Codex Login Check in 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

Nutzt das oeffentliche Base Image ghcr.io/openai/codex-universal.

Prueft codex --version und login status vor Modellaufrufen.

Unterstuetzt gemountetes CODEX_HOME fuer ChatGPT Subscription Login.

Unterstuetzt CODEX_API_KEY fuer non-interactive codex exec runs.

01

Runner Image

Installiere Codex in einem Runner Image und leere den Base Entrypoint, damit Dagu den Befehl kontrolliert. Der Version Check sollte vor der Nutzung im DAG bestehen.

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

Wenn die Host-CLI mit ChatGPT eingeloggt ist und Credentials dateibasiert gespeichert sind, mounte dieses Codex home an einen separaten Pfad und setze CODEX_HOME im Container.

  • Nicht ueber /root/.codex mounten, weil dort in diesem Image der Standalone-Package-Cache liegt.
  • Wenn der Host einen OS-Keychain nutzt, erstelle ein separates file-backed CODEX_HOME fuer den Dagu worker.
  • auth.json enthaelt Access Tokens und ist als Secret zu behandeln.
03

API-Key Run

Fuer Automation ohne ChatGPT Login uebergib CODEX_API_KEY nur an den harness-Schritt, der Codex startet.

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

Nutze step-level container, wenn nur Codex das Credential braucht. Nutze root-level container nur, wenn command-Schritte und Codex dieselbe Toolchain und denselben Workspace teilen muessen.