Codex Docker sandbox

Dagu Docker sandbox से Codex चलाएं।

ऐसी runner image use करें जिसमें Codex CLI हो, फिर Dagu को step-level या root-level container में provider: codex चलाने दें। File-backed CODEX_HOME readable हो तो ChatGPT login काम करता है; API-key runs CODEX_API_KEY use कर सकते हैं।

Docker में Codex login check
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

Public ghcr.io/openai/codex-universal base image use करता है।

Model calls से पहले codex --version और login status verify करता है।

ChatGPT subscription login के लिए mounted CODEX_HOME support करता है।

Non-interactive codex exec runs के लिए CODEX_API_KEY support करता है।

01

Runner image

Codex को runner image में install करें और base entrypoint clear करें ताकि Dagu command control कर सके। DAG में use करने से पहले version check pass होना चाहिए।

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 से logged in है और credentials file-backed हैं, उस Codex home को अलग path पर mount करें और container में CODEX_HOME set करें।

  • इस image में /root/.codex के ऊपर mount न करें, क्योंकि standalone package cache वहीं रहता है।
  • अगर host OS keychain use करता है, Dagu worker के लिए अलग file-backed CODEX_HOME बनाएं।
  • auth.json में access tokens होते हैं, इसे secret की तरह treat करें।
03

API-key run

ऐसी automation के लिए जो ChatGPT login reuse नहीं करती, 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

अगर credential सिर्फ Codex को चाहिए तो step-level container use करें। Root-level container तभी use करें जब command steps और Codex को वही toolchain और workspace share करना हो।