# ============================================================================= # 用途:本 Dockerfile 採「單階段建置(single-stage build)」產出 codex CLI 映像。 # 以 node-slim 為基底,透過 npm 全域安裝 @openai/codex CLI 套件, # 並額外安裝 ca-certificates 以支援 HTTPS 連線, # 最終映像預設執行 `codex --version`。 # 更新日期:2026/07/01 09:58:04 # ============================================================================= # syntax 指示詞:指定使用 dockerfile:1 前端語法,啟用 BuildKit 進階功能(必須置於檔首第一行有效指令) # syntax=docker/dockerfile:1 # 1. 參數處理:映像檔版本與套件版本皆直接寫死,無可調參數需以 ARG 注入(略) # ---- 單一建置階段:安裝 codex CLI 套件 ---- # FROM node:22-slim:以 node 22 slim 版為基底開啟唯一建置階段(slim 版較精簡) FROM node:22-slim # ENV DEBIAN_FRONTEND=noninteractive:設定 Debian 套件管理為非互動模式,避免 apt 安裝時跳出互動提示而卡住建置 ENV DEBIAN_FRONTEND=noninteractive # 2. 安裝套件:先以 apt 安裝 codex 進行 HTTPS 連線所需的 ca-certificates,再以 npm 全域安裝 @openai/codex CLI # 官方 node image 的全域安裝前綴為 /usr/local,套件與其相依落於 /usr/local/lib/node_modules,bin symlink 落於 /usr/local/bin # (單階段無跨階段 COPY,npm 建立的 /usr/local/bin/codex symlink 原地保留、指向正確,可正常解析平台原生相依) # RUN:apt 安裝 ca-certificates(--no-install-recommends 不裝建議套件)→ npm 全域安裝 codex → # 於同一層合併清理 apt 索引快取與 npm 快取,避免快取檔殘留而膨脹該層 RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ && npm install -g @openai/codex \ && npm cache clean --force \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # 3. 複製檔案:本映像為純 CLI 工具安裝,無專案原始碼需複製(略) # 4. 執行程序:codex 為預編譯 npm 套件,無 build / compile / transpile 步驟(略) # 5. 縮小映像檔:單階段下透過「slim 基底 + --no-install-recommends + 安裝與清理合併於同層(見步驟 2)」達成縮小,故此處無獨立清理指令 # 6. 設定入口:CMD 置於最後,語意與原檔一致 # CMD:容器啟動時的預設執行指令,預設執行 `codex --version` 顯示版本(exec form,不經 shell);可於 docker run 時覆寫 CMD ["codex", "--version"]