Sandbox Docker Codex

Executer Codex depuis une sandbox Docker Dagu.

Utilisez une image runner contenant la CLI Codex, puis laissez Dagu executer provider: codex dans un container d'etape ou racine. Un login ChatGPT fonctionne si le container lit un CODEX_HOME fichier; CODEX_API_KEY convient aux runs codex exec.

Verification login Codex dans 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

Utilise l'image publique ghcr.io/openai/codex-universal.

Verifie codex --version et le login avant les appels modele.

Supporte un CODEX_HOME monte pour le login ChatGPT.

Supporte CODEX_API_KEY pour les runs non interactifs codex exec.

01

Image runner

Installez Codex dans une image runner et videz l'entrypoint de base pour que Dagu controle la commande. La verification de version doit passer avant l'utilisation dans un 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

Auth ChatGPT

Si la CLI hote est connectee avec ChatGPT et que les credentials sont stockes en fichiers, montez ce Codex home dans un chemin separe et definissez CODEX_HOME dans le container.

  • Ne montez pas sur /root/.codex dans cette image, car le cache du package autonome y est installe.
  • Si l'hote utilise un keychain OS, creez un CODEX_HOME fichier dedie au worker Dagu.
  • auth.json contient des access tokens et doit etre traite comme un secret.
03

Run avec API key

Pour une automatisation qui ne reutilise pas ChatGPT, passez CODEX_API_KEY seulement a l'etape harness qui lance Codex.

Run Codex d'etape
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

Portee du container

Utilisez un container d'etape si seul Codex a besoin du credential. Utilisez un container racine seulement si les etapes command et Codex doivent partager le meme toolchain et workspace.