Sandbox Docker de Codex

Ejecuta Codex desde un sandbox Docker de Dagu.

Usa una imagen runner con Codex CLI y deja que Dagu ejecute provider: codex dentro de un container por paso o raiz. El login ChatGPT funciona si el contenedor puede leer un CODEX_HOME basado en archivos; CODEX_API_KEY sirve para codex exec.

Verificacion de login Codex en 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

Usa la imagen base publica ghcr.io/openai/codex-universal.

Verifica codex --version y login status antes de llamadas al modelo.

Soporta CODEX_HOME montado para login de suscripcion ChatGPT.

Soporta CODEX_API_KEY para ejecuciones no interactivas codex exec.

01

Imagen runner

Instala Codex en una imagen runner y limpia el entrypoint base para que Dagu controle el comando. La verificacion de version debe pasar antes de usarla en 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 con suscripcion ChatGPT

Si la CLI host ya esta logueada con ChatGPT y las credenciales estan en archivos, monta ese Codex home en una ruta separada y define CODEX_HOME dentro del contenedor.

  • No montes sobre /root/.codex en esta imagen porque alli vive el cache del paquete standalone.
  • Si el host usa keychain del sistema, crea un CODEX_HOME basado en archivos para el worker Dagu.
  • auth.json contiene access tokens y debe tratarse como secreto.
03

Ejecucion con API key

Para automatizacion que no debe reutilizar login ChatGPT, pasa CODEX_API_KEY solo al paso harness que ejecuta Codex.

Run Codex por paso
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

Alcance del container

Usa container por paso cuando solo Codex necesita la credencial. Usa container raiz solo cuando pasos command y Codex deben compartir toolchain y workspace.