本文根據 Docker 官方文檔《Build, tag, and publish an image》《Publishing ports》《Docker Compose Quickstart》和 Claude Code 官方《Best practices for Claude Code》《Configure permissions》整理,資料核對於 2026-11-05。配圖為本站整理的示意圖,不是介面截圖。本站(bigolab.com)不是 Anthropic 或 Docker 官方網站。
適用於誰
- 寫完了一個網站或接口服務,想放到雲伺服器上讓別人訪問的人;
- 聽說「用 Docker 部署」但沒做過,想讓 Claude Code 帶着做的人;
- 擔心 AI 直接登入伺服器、一通命令把線上弄壞的人。
本文只寫通用做法,不綁定具體雲服務商。
結論先說
- 讓 Claude Code 寫文件,別讓它直接操作線上伺服器。 它擅長生成 Dockerfile、
.dockerignore、compose 配置和部署清單;這些先在你自己的電腦上跑通,再搬到伺服器。這條是本站建議。 - 先在本機驗證。 Docker 官方的做法是用 Dockerfile 構建鏡像,再用
docker run -p或docker compose up啟動,本機能跑,上伺服器出問題的概率才低。 .dockerignore要把.env排除。 Docker 官方的 Compose 入門明確說,不加.dockerignore,項目目錄裏的.env(可能含密鑰)會被送進構建上下文,有被帶進鏡像層的風險。- 端口預設發佈到所有網卡。 Docker 官方說,發佈端口時預設監聽所有網絡接口,別把數據庫端口隨便暴露;需要時用
127.0.0.1:主機端口:容器端口只綁本機。 - 數據要放卷裏。 官方說,
docker compose down會刪除容器和寫在容器可寫層裏的數據;加了-v會連命名卷一起刪,數據永久丟失。

圖:本站根據 Docker 官方文檔:Compose 入門 整理的示意圖
第一步:讓它寫 Dockerfile 和 .dockerignore
提示詞 1:容器化,先出方案
text
我的項目是【Node.js / Python Flask / 其他】,啟動命令是【npm start / python app.py】,監聽端口 【3000】。
請先閱讀項目,在計劃模式裏告訴我:
1)選哪個基礎鏡像(說明理由,版本固定到具體版本號,不要用 latest);
2)Dockerfile 怎麼分層,依賴安裝放在代碼複製之前以利用緩存;
3).dockerignore 要排除哪些文件,必須包含 .env、node_modules、.git 和各種日誌;
4)運行時需要哪些環境變量(只列名字,不要寫值)。
我同意後再創建文件。
關於構建,Docker 官方文檔說明:docker build 命令末尾的 . 是構建上下文,構建器在那裏找 Dockerfile 和其他引用的文件;給鏡像打標籤用 -t,完整名字結構是「倉庫地址/路徑:標籤」,不寫標籤預設是 latest。所以讓 Claude 固定版本號、給鏡像起有意義的標籤,方便以後回退。
第二步:寫 compose,數據放卷裏,端口別亂開
提示詞 2:生成 compose.yaml
text
請為這個項目寫 compose.yaml:一個 web 服務(用剛才的 Dockerfile)加一個【PostgreSQL / Redis】。要求:
1)數據庫的數據放命名卷裏,不要放在容器可寫層;
2)數據庫不要發佈端口到主機,只讓 web 服務通過 compose 內聯網絡訪問;
3)web 服務的端口映射寫成 "127.0.0.1:8080:3000",只綁本機,等我另外配 Web 網關(如 Nginx)對外提供訪問;
4)密碼等敏感資料從 .env 文件讀取,提供 .env.example(只寫變量名和佔位值),不要生成真實密碼;
5)給數據庫加健康檢查,web 服務等它健康後再啟動。
寫完後運行 docker compose config 檢查最終配置,並向我解釋每一段。
官方文檔裏 docker compose config 不需要棧在運行,只根據你的文件顯示 Compose 最終會應用什麼,排查變量替換問題很有用。
第三步:本機跑通
提示詞 3:本機驗證
text
請在本機用 docker compose up -d 啟動,然後:
1)用 docker compose logs -f 查看日誌,確認 web 和數據庫都正常啟動,沒有報錯;
2)訪問 http://localhost:8080,確認首頁能打開;
3)用 docker compose exec 進入 web 服務,檢查環境變量是否齊全(只檢查變量名是否存在,不要把值打印出來);
4)驗證數據持久化:docker compose down 之後再 up,數據還在;
5)注意:不要使用 docker compose down -v,那會刪除數據卷。
如有失敗,先給我原因再修。
這裏的命令都來自 Docker 官方的 Compose 入門:docker compose up -d 後台啟動,logs -f 持續看日誌,exec 進入運行中的容器,down 停止並刪除容器,down -v 會連命名卷一起刪。

圖:本站根據 Docker 官方文檔整理的示意圖
第四步:上伺服器前,讓它寫清單,不執行
提示詞 4:部署手冊和回滾方案,只寫文檔
text
請寫一份 docs/deploy.md,面向沒有運維經驗的人,內容:
1)伺服器上要先裝什麼(Docker 和 Compose 插件),怎麼確認裝好了;
2)怎麼把項目文件放到伺服器(說明不要把 .env 提交到倉庫,而是在伺服器上單獨創建);
3)首次啟動的命令和檢查點;
4)怎麼更新版本:拉新代碼、重新構建、重啟,以及每一步出問題怎麼回滾到上一個鏡像標籤;
5)伺服器側要自己確認的事:防火牆或安全組只開放必要端口、對外訪問通過 Web 網關並啟用 HTTPS、數據卷如何備份。
只寫文檔,不要執行任何會連接伺服器的命令。
雲伺服器的安全組、證書申請、域名解析,每家服務商不一樣,請看你所用服務商的官方文檔,本文不展開。
更新版本時,讓回退有路可走
第一次部署成功只是開始,真正容易出事的是以後的每一次更新。建議養成兩個習慣。第一,每次構建都給鏡像打一個能對應到代碼版本的標籤,比如日期或提交編號,而不是一直覆蓋 latest;Docker 官方的鏡像命名裏,標籤就是用來區分不同版本或變體的,不寫標籤時才預設是 latest。第二,更新前先記下當前正在運行的鏡像標籤,出問題時直接換回舊標籤重啟即可。你可以在上面那份 docs/deploy.md 裏讓 Claude 把這兩步寫成固定動作,每次更新都照着做,而不是臨場發揮。
為什麼別讓它直接動線上
Claude Code 官方的權限機制是為了讓你保持控制:預設會在運行命令前詢問。線上伺服器的特點是:一旦命令出錯就影響真實用戶,而且很多操作不可逆(刪卷、覆蓋配置、重啟數據庫)。建議:
- 部署由你自己執行,Claude 負責寫和解釋;
- 要讓它協助時,也只用於只讀檢查,例如讀日誌、看磁盤佔用;
- 在
.claude/settings.json裏把有風險的命令設為每次詢問,例如(本站按官方規則寫法拼的):
json
{
"permissions": {
"ask": ["Bash(ssh *)", "Bash(scp *)", "Bash(docker push *)", "Bash(docker compose down *)"],
"deny": ["Read(./.env)", "Read(./.env.production)"]
}
}
權限規則的說明見 /guides/claude-code-permission-modes,如果你想在伺服器上直接運行 Claude Code,見 /guides/claude-code-ssh-remote-server,但要考慮它對線上環境的影響。密鑰的整體原則見 /guides/ai-coding-security-secrets-permissions。
常見問題
Q:容器起來了,瀏覽器訪問不到?
先看端口映射:HOST_PORT:CONTAINER_PORT 左邊是主機端口,右邊是容器內程序監聽的端口。官方例子是主機 8080 轉發到容器 80。再看程序是不是隻監聽了 127.0.0.1(容器裏需要監聽 0.0.0.0 才能被映射出來),這一條是通用常識,不是官方原話。
Q:想讓它部署到 Docker 以外的平台?
本文只講 Docker 和通用思路,其他平台請以其官方文檔為準。
訂閱和額度
部署類任務讀取的文件不多,但調試日誌可能很長。訂閱選擇見 /chongzhi/claude-code,價格和額度以官方頁面當前顯示為準。
相關教學
- /guides/claude-code-backend-api-database-mcp:寫後端接口、連數據庫
- /guides/claude-code-sandbox-security:沙箱與安全
- /guides/dify-docker-compose-self-host:Docker Compose 自建示例
參考資料
- Docker 文檔:Build, tag, and publish an image — https://docs.docker.com/get-started/docker-concepts/building-images/build-tag-and-publish-an-image/
- Docker 文檔:Publishing ports — https://docs.docker.com/get-started/docker-concepts/running-containers/publishing-ports/
- Docker 文檔:Docker Compose Quickstart — https://docs.docker.com/compose/gettingstarted/
- Claude Code 文檔:Configure permissions — https://code.claude.com/docs/en/permissions
0 條評論
還沒有評論,來搶沙發~