重整 Dockerfile 為多階段六步流程並補齊專案文件 #14
+1
-1
@@ -4,7 +4,7 @@
|
||||
# runtime 階段同樣改用較小的 node-slim 基底,只帶入 build 階段安裝好的 codex
|
||||
# 套件與其相依,並額外安裝 ca-certificates 以支援 HTTPS 連線,
|
||||
# 最終映像預設執行 `codex --version`。
|
||||
# 更新日期:2026/06/30 12:00:12
|
||||
# 更新日期:2026/06/30 12:23:42
|
||||
# =============================================================================
|
||||
|
||||
# syntax 指示詞:指定使用 dockerfile:1 前端語法,啟用 BuildKit 進階功能(必須置於檔首第一行有效指令)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# codex
|
||||
|
||||
> 更新時間(Asia/Taipei):2026/06/30 12:04:48
|
||||
> 更新時間(Asia/Taipei):2026/06/30 12:29:20
|
||||
|
||||
以多階段建置(multi-stage build)打包 [@openai/codex](https://www.npmjs.com/package/@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 倉庫。
|
||||
|
||||
@@ -75,6 +75,16 @@ docker build --build-arg CODEX_PACKAGE=@openai/codex@latest -t codex:latest .
|
||||
`.gitea/workflows/cd.yaml` 定義 CD 流程:當 push 到 `master` 分支時觸發,依序執行兩個 job:
|
||||
|
||||
1. **Release Tag Version**:以共用 composite action 釋出並標註成品版本,輸出 `version`。
|
||||
2. **Docker Build & Push**:checkout 原始碼 → 登入 `gitea.jsc.idv.tw` 倉庫(帳密來自 secrets)→ 以 `gitea.repository` 為映像名稱、上一步 `version` 為 tag 建置並推送映像檔。
|
||||
2. **Docker Build & Push**:checkout 原始碼 → 登入倉庫 → 建置並推送映像檔。
|
||||
|
||||
> 對外契約(CI 倉庫位址 `gitea.jsc.idv.tw`、登入帳號、`secrets.TOKEN`、建置與推送指令)皆沿用原設定,未變更。
|
||||
其中倉庫主機與登入認證皆由 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 的輸出。
|
||||
|
||||
Reference in New Issue
Block a user