前言
身為一個喜歡在 Dev Container 裡開發的軟體工程師,時常會切換不同的容器,但依然需要 Codex CLI 輔助開發。每次重建容器都要重新安裝、登入 Codex CLI, 重複作業令人煩躁,所以有了這篇文章。
解法
整體思路
我的做法是將安裝、登入 Codex CLI 後的資料都存放在容器間共用的 volume, 當容器啟動時會先檢查 Codex CLI 是否存在,存在則略過,不存在則嘗試安裝。
後續只要登入過一次,其他容器就能直接使用😁
限制大概是這些容器的作業系統環境需要相同,而且必須使用 Dev Container 搭配 docker-compose.yml。
第一步:建立共享 volume
# 在本機終端機執行
docker volume create codex-home
第二步:修改 docker-compose.yml
volumes:
codex-home:
external: true
services:
app:
volumes:
- codex-home:/home/vscode/.codex
第三步:修改 Dockerfile
ENV PATH="/home/vscode/.codex/bin:${PATH}"
RUN mkdir -p /home/vscode/.codex \
&& chown vscode:vscode /home/vscode/.codex
第四步:修改 devcontainer.json
調整 postCreateCommand 欄位的目的是確保以下情況, 若沒有安裝 Codex CLI 才會執行安裝:
- 第一次建立容器
- 使用 Rebuild Container 重新建立容器
{
"postCreateCommand": "原本的命令 && (test -x \"$HOME/.codex/bin/codex\" || curl -fsSL https://chatgpt.com/codex/install.sh | env CODEX_INSTALL_DIR=\"$HOME/.codex/bin\" CODEX_NON_INTERACTIVE=true sh)"
}
結論
願大家都能更順利使用 AI 實現自己的想法, 至少不會再因為設定環境而苦惱,哈哈!