Codex Docker sandbox
شغل Codex من Docker sandbox في Dagu.
استخدم صورة runner تحتوي على Codex CLI، ثم دع Dagu يشغل provider: codex داخل container على مستوى الخطوة أو الجذر. يعمل ChatGPT login عندما تستطيع الحاوية قراءة CODEX_HOME مخزن كملفات؛ وتشغيل API key يستخدم CODEX_API_KEY.
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 قبل استدعاءات النموذج.
يدعم CODEX_HOME مربوطا لاستخدام ChatGPT subscription login.
يدعم CODEX_API_KEY لتشغيل codex exec غير التفاعلي.
صورة runner
ثبت Codex داخل صورة runner واجعل entrypoint للصورة الأساسية فارغا حتى يتحكم Dagu في الأمر. يجب أن ينجح فحص الإصدار قبل استخدام الصورة في DAG.
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"]مصادقة ChatGPT subscription
إذا كانت CLI على المضيف مسجلة الدخول عبر ChatGPT وكانت credentials مخزنة كملفات، اربط Codex home في مسار منفصل واضبط CODEX_HOME داخل الحاوية.
- لا تربط فوق /root/.codex في هذه الصورة لأن cache الحزمة المستقلة موجود هناك.
- إذا كان المضيف يستخدم OS keychain، أنشئ CODEX_HOME منفصلا ومخزنا كملفات لعامل Dagu.
- auth.json يحتوي access tokens ويجب التعامل معه كسر.
تشغيل API key
للأتمتة التي لا تعيد استخدام ChatGPT login، مرر CODEX_API_KEY فقط إلى خطوة harness التي تشغل Codex.
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.نطاق الحاوية
استخدم container على مستوى الخطوة عندما يحتاج Codex وحده إلى credential. استخدم root-level container فقط عندما تحتاج خطوات command و Codex إلى نفس toolchain و workspace.
صفحات sandbox أخرى