設定
所有設定都存放在專案根目錄的 .env 檔案中。此檔案已加入 gitignore — 永遠不會被提交。
AI 提供者
Section titled “AI 提供者”容器支援兩種互斥的驗證模式(依優先順序排列):
- LiteLLM 代理 — 設定
LITELLM_BASE_URL和LITELLM_API_KEY以透過 LiteLLM 代理路由(見下方)。 - OAuth 模式 — 僅設定
CLAUDE_CODE_OAUTH_TOKEN(見下方)。
請勿混合使用模式 — 僅使用其中一種。
Claude Max (OAuth)
Section titled “Claude Max (OAuth)”| 變數 | 說明 | 範例 |
|---|---|---|
CLAUDE_CODE_OAUTH_TOKEN | 來自 Claude Max 訂閱的 OAuth 權杖 | sk-ant-oat01-... |
設定後,Claude Code 會直接使用 OAuth 向 Anthropic 進行驗證 — 無需 API 金鑰或代理。您可以從 Claude Code 設定或 Anthropic 主控台 取得權杖。
LiteLLM 代理
Section titled “LiteLLM 代理”如果您的 LiteLLM(或其他)代理已支援原生 Anthropic Messages API — 包括 web_search、串流及工具使用 — 請將 LITELLM_BASE_URL 設定為代理網域。容器會自動衍生提供者特定的 URL:
- Anthropic 端點 →
${LITELLM_BASE_URL}/anthropic(Claude Code 使用) - OpenAI 相容端點 →
${LITELLM_BASE_URL}/openai/v1
| 變數 | 說明 | 範例 |
|---|---|---|
LITELLM_BASE_URL | 您的 LiteLLM 代理網域(不含路徑後綴) | https://litellm.example.com |
LITELLM_API_KEY | 代理驗證用的 API 金鑰 | your-api-key 或預設為 litellm-proxy |
使用者只需設定網域 — 提供者路徑後綴會自動附加。
在執行時,進入點會從 LITELLM_API_KEY 衍生出 ANTHROPIC_API_KEY,讓 Claude Code 能使用代理憑證,而無需額外的使用者面向變數。
在此模式下,模型名稱不會被重新對應。Claude Code 會發送其標準模型識別碼(例如 claude-sonnet-4-6),由 LiteLLM 將其路由至您設定的後端。
TLS 憑證驗證
Section titled “TLS 憑證驗證”預設情況下,Node.js 會驗證所有 HTTPS 連線的 TLS 憑證。如果您的上游 API 提供者使用自簽憑證(常見於內部 Open WebUI 或 LiteLLM 代理),您可以在 .env 檔案中新增以下設定來停用驗證:
NODE_TLS_REJECT_UNAUTHORIZED=0這在正式環境中不建議使用。僅在您信任容器與 API 端點之間的網路路徑時才設定此項。
AI 程式撰寫代理
Section titled “AI 程式撰寫代理”除了 Claude Code 之外,容器還包含多個 AI 程式撰寫代理:
| 代理 | 指令 | 提供者 |
|---|---|---|
| Codex | codex | OpenAI 相容 |
| Pi | pi | 多提供者(在執行時設定) |
| Oh-My-Pi | omp | 多提供者(在執行時設定) |
Pi 和 Oh-My-Pi 以全域 npm 套件安裝。Codex 是獨立的二進位檔,會在執行時自動更新。
遠端顯示 (noVNC)
Section titled “遠端顯示 (noVNC)”容器執行虛擬顯示堆疊,用於觀看及操作有視窗的瀏覽器。請參閱遠端顯示 (noVNC) 了解連線說明及環境變數(ENABLE_VNC、VNC_RESOLUTION、DISPLAY、NOVNC_HOST_PORT)。
Chrome DevTools MCP
Section titled “Chrome DevTools MCP”容器包含預先設定的 Chrome DevTools MCP 伺服器,用於無頭瀏覽器自動化。Claude Code 可以瀏覽網頁、截取螢幕擷圖及檢查 DOM,無需任何額外設定。詳情請參閱 Chrome DevTools MCP。
| 變數 | 說明 | 設定方式 |
|---|---|---|
GIT_AUTHOR_NAME | git 提交的名稱 | git config user.name |
GIT_AUTHOR_EMAIL | git 提交的電子郵件 | git config user.email |
如果主機上已設定 git,可自動填入兩個值:
echo "GIT_AUTHOR_EMAIL=$(git config user.email)" >> .envecho "GIT_AUTHOR_NAME=\"$(git config user.name)\"" >> .env| 變數 | 說明 | 設定方式 |
|---|---|---|
SSH_PRIVATE_KEY | Base64 編碼的私鑰 | base64 < ~/.ssh/id_ed25519 |
GitHub CLI
Section titled “GitHub CLI”| 變數 | 說明 | 設定方式 |
|---|---|---|
GH_TOKEN | 用於 gh CLI 和 HTTPS git 的 GitHub 個人存取權杖 | gh auth token(如果本機已安裝 gh) |
當 .env 中設定了 GH_TOKEN 時,gh CLI 會自動驗證 — 無需執行 gh auth login。進入點也會執行 gh auth setup-git,這會設定 git 憑證助手,讓 HTTPS 的 git clone 和 git push 無需 SSH 金鑰即可運作。
如果主機上已安裝並驗證 gh,可直接擷取權杖:
echo "GH_TOKEN=$(gh auth token)" >> .env否則,請建立個人存取權杖並手動新增。細粒度權杖(建議使用)和傳統權杖均可使用。細粒度權杖可讓您將存取範圍限定至特定儲存庫。傳統權杖需要 repo 範圍才能存取私有儲存庫。
若要在容器內驗證身份驗證:
gh auth status工具安裝方式
Section titled “工具安裝方式”每個語言執行環境、CLI 和工具都在映像建置時直接安裝於 Dockerfile 中。預建映像會在每次推送至 main 時發布至 ghcr.io/f5-sales-demo/devcontainer:latest,因此大多數使用者無需在本機建置。
執行 docker compose up -d 會自動拉取預建映像。若要在自訂 Dockerfile 後於本機建置,請明確指定建置檔案:
docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build詳情請參閱本機開發。
執行 podman-compose up -d 會自動拉取預建映像。若要在自訂 Dockerfile 後於本機建置,請明確指定建置檔案:
podman-compose -f docker-compose.yml -f docker-compose.build.yml up -d --build詳情請參閱本機開發。
Dockerfile 使用針對 Docker 層級快取最佳化的兩階段建置。請參閱本機開發 — 兩階段建置架構了解完整的層級分解及建置快取詳情。
Claude Code 工具感知
Section titled “Claude Code 工具感知”容器包含內建設定,防止 Claude Code 混淆工具名稱。工具感知安裝在兩個記憶層級,以實現縱深防禦:
- 受管原則 (
/etc/claude-code/CLAUDE.md) — 在 Docker 建置時安裝。這是 Claude Code 記憶階層中最高優先級的層級,即使工作目錄中存在大型專案CLAUDE.md,也會始終載入。 - 使用者記憶 (
~/.claude/CLAUDE.md) — 在首次啟動時由進入點建立。提供備份層級及使用者可見、可自訂的副本。
記憶層級優先順序
Section titled “記憶層級優先順序”Claude Code 從多個記憶層級載入指令(由高到低優先順序):
- 受管原則 (
/etc/claude-code/) — 始終載入,無法排除 - 專案記憶 (
./CLAUDE.md) — 依專案目錄載入 - 使用者記憶 (
~/.claude/CLAUDE.md) — 全域載入,適用於所有工作階段 - 本機記憶 (
./CLAUDE.local.md) — 個人的專案級覆寫
若沒有受管原則層級,使用者記憶中的工具感知在與大型專案級 CLAUDE.md 競爭時可能被降低優先順序,導致 Claude 失去對其 PascalCase 工具名稱的感知。受管層級保證工具感知始終以最高優先順序載入。
執行內建自我測試以驗證設定:
claude-self-test這會檢查所有設定檔是否就位且包含預期的工具參考。
若要將工具新增至映像,請編輯 Dockerfile 並在本機重新建置。請參閱本機開發 — 新增工具了解如何新增 APT 套件、npm 工具、pip 工具及二進位檔下載。
VS Code 擴充功能
Section titled “VS Code 擴充功能”擴充功能在 .devcontainer/devcontainer.json 的 customizations.vscode.extensions 下設定,在 VS Code 中開啟時會自動安裝。
所有資料存放在具名磁碟區中 — 不掛載主機目錄:
| 磁碟區 | 掛載點 | 內容 |
|---|---|---|
workspace | /workspace | 您複製的儲存庫和專案檔案 |
home | /home/vscode | Shell 歷史紀錄、工具設定、快取、SSH 金鑰 |
兩者在容器重新啟動和重建後均會保留。執行 docker compose pull 以在重新啟動前取得最新的預建映像。
| 操作 | 資料 |
|---|---|
docker compose down | 保留 |
docker compose down -v | 刪除 |
兩者在容器重新啟動和重建後均會保留。執行 podman-compose pull 以在重新啟動前取得最新的預建映像。
| 操作 | 資料 |
|---|---|
podman-compose down | 保留 |
podman-compose down -v | 刪除 |
| 主機 | 容器 | 服務 |
|---|---|---|
127.0.0.1:${NOVNC_HOST_PORT:-6080} | 6080 | noVNC 遠端顯示(僅限 localhost,可透過 NOVNC_HOST_PORT 覆寫) |
連接埠繫結至 127.0.0.1,因此只能從您的機器存取,無法從網路存取。