4e481884f84c989a3c0d66d39d3e9c1c5987013f
codex
更新時間(Asia/Taipei):2026/06/30 12:29:20
以多階段建置(multi-stage build)打包 @openai/codex CLI 的 Docker 映像檔專案。build 階段於 node:<版本>-slim 透過 npm 全域安裝 codex CLI,runtime 階段改用同樣精簡的 node-slim 基底,只帶入 codex 套件與其相依,並額外安裝 ca-certificates 以支援 HTTPS 連線,最終映像預設執行 codex --version。搭配 .gitea/workflows/cd.yaml,當 push 到 master 分支時,會自動釋出版本號、建置映像檔並推送到 Gitea 倉庫。
專案列表
專案描述
| 專案名稱 | 專案描述 |
|---|---|
| codex | 以多階段建置打包 @openai/codex CLI 的 Docker 映像檔專案,提供 Dockerfile 與 Gitea Actions CD 流程;此專案未公開可列入 README 的功能。 |
參考專案
| 專案名稱 | 參考專案列表 |
|---|---|
| codex | 無 |
NuGet 套件
| 專案名稱 | NuGet 套件列表 |
|---|---|
| codex | 無 |
功能列表
本專案為 Docker 映像檔建置專案,未公開可列入 README 的程式方法(public method/constructor/extension method/operator)。實際交付內容為下列容器映像檔的建置與發佈設定,使用方式詳見「使用範例」。
使用範例
建置映像檔
於專案根目錄(含 Dockerfile)執行:
docker build -t codex .
- 預設使用
node:22-slim作為 build 與 runtime 基底,並全域安裝@openai/codex。 - 建議啟用 BuildKit(檔首已宣告
# syntax=docker/dockerfile:1):DOCKER_BUILDKIT=1 docker build -t codex .。
執行容器
# 顯示 codex 版本(映像檔預設 CMD)
docker run --rm codex
# 覆寫預設指令,改執行其他 codex 子指令
docker run --rm codex codex --help
以 build 參數覆寫預設值
Dockerfile 將可調參數集中於檔首 ARG,可於建置時覆寫:
# 指定 node 版本
docker build --build-arg NODE_VERSION=20 -t codex:node20 .
# 指定要安裝的 npm 套件(預設 @openai/codex)
docker build --build-arg CODEX_PACKAGE=@openai/codex@latest -t codex:latest .
| 參數 | 預設值 | 說明 |
|---|---|---|
NODE_VERSION |
22 |
node 基底映像版本(同時套用於 build 與 runtime 階段) |
BUILD_IMAGE |
node:${NODE_VERSION}-slim |
build 階段基底映像 |
RUNTIME_IMAGE |
node:${NODE_VERSION}-slim |
runtime 階段基底映像 |
CODEX_PACKAGE |
@openai/codex |
要全域安裝的 npm 套件名稱 |
CI/CD 自動發佈(Gitea Actions)
.gitea/workflows/cd.yaml 定義 CD 流程:當 push 到 master 分支時觸發,依序執行兩個 job:
- Release Tag Version:以共用 composite action 釋出並標註成品版本,輸出
version。 - Docker Build & Push:checkout 原始碼 → 登入倉庫 → 建置並推送映像檔。
其中倉庫主機與登入認證皆由 Gitea 的 Actions 變數/密鑰提供:
| 設定來源 | 用途 |
|---|---|
vars.SERVER_DOMAIN |
倉庫主機位址(image 名稱前綴、docker login 目標) |
secrets.USERNAME |
登入倉庫的帳號 |
secrets.PASSWORD |
登入倉庫的密碼/權杖(以 --password-stdin 餵入,避免出現在指令參數) |
vars.ACTION_RELEASE_TAG_VERSION |
釘選 release-tag-version composite action 版本 |
vars.ACTION_CHECKOUT_VERSION |
釘選 checkout action 版本 |
映像檔最終標籤格式為
${vars.SERVER_DOMAIN}/${gitea.repository}:${version},其中version來自 Release Tag Version job 的輸出。