Files
codex/Dockerfile

41 lines
2.6 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =============================================================================
# 用途:本 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_modulesbin symlink 落於 /usr/local/bin
# (單階段無跨階段 COPYnpm 建立的 /usr/local/bin/codex symlink 原地保留、指向正確,可正常解析平台原生相依)
# RUNapt 安裝 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"]