Claude Code 部署網站:先寫 Dockerfile 和 compose 在本機跑通,再按清單上雲伺服器,別讓它直接改線上

想讓 Claude Code 幫你把網站部署到雲伺服器。本文只寫通用做法,按 Docker 官方文檔講:讓它寫 Dockerfile、.dockerignore 和 compose,在本機跑通,端口和數據卷怎麼設,再給出上線清單,並說明為什麼不要讓它直接動線上機器。

NNathaniel bigo··原創首發·AI 輔助撰寫
9 分鐘讀完
資料核對於 2026-11-05 · 依據官方文檔與公開資料整理 Pro 帳號
本文根據 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 直接登入伺服器、一通命令把線上弄壞的人。

本文只寫通用做法,不綁定具體雲服務商。

結論先說

  1. 讓 Claude Code 寫文件,別讓它直接操作線上伺服器。 它擅長生成 Dockerfile、.dockerignore、compose 配置和部署清單;這些先在你自己的電腦上跑通,再搬到伺服器。這條是本站建議。
  2. 先在本機驗證。 Docker 官方的做法是用 Dockerfile 構建鏡像,再用 docker run -p 或 docker compose up 啟動,本機能跑,上伺服器出問題的概率才低。
  3. .dockerignore 要把 .env 排除。 Docker 官方的 Compose 入門明確說,不加 .dockerignore,項目目錄裏的 .env(可能含密鑰)會被送進構建上下文,有被帶進鏡像層的風險。
  4. 端口預設發佈到所有網卡。 Docker 官方說,發佈端口時預設監聽所有網絡接口,別把數據庫端口隨便暴露;需要時用 127.0.0.1:主機端口:容器端口 只綁本機。
  5. 數據要放卷裏。 官方說,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,價格和額度以官方頁面當前顯示為準。

相關教學

參考資料

  • 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

Nathaniel 的更多內容

  1. 01

    Claude Code 在 Windows 上的常見坑:Git Bash 還是 PowerShell、路徑反斜槓、假報錯、WSL 怎麼選

    Windows 上用 Claude Code,裝好之後最容易踩的是:用哪個 shell、路徑寫法不一致、grep 沒匹配就報錯、鉤子沒生效、WSL 和原生怎麼選。本文逐條按官方文檔整理原因和處理辦法,附三段提示詞和一張對照表。

    Claude0
  2. 02

    Claude Code Hooks 實戰「提交前自動跑測試」:PreToolUse 攔住 git commit,測試不過就退出碼 2,附 Windows 注意點

    只寫一個完整例子:讓 Claude Code 每次要執行 git commit 之前,先自動跑項目測試,沒通過就攔下並把輸出交給它修。本文按官方 Hooks 文檔給出腳本、settings.json 配置、測試方法、排錯和 Windows 的兩處坑。

    Claude0
  3. 03

    Claude Code 自定義斜槓命令與 Skill 實戰:從零寫一個「生成更新日誌」的 /release-notes,含傳參、預執行命令和調試

    概念看過了,還是不知道從哪下手?本文按 Claude Code 官方「Extend Claude with skills」寫一個完整可用的例子:用 /release-notes 根據 git 記錄生成更新日誌,覆蓋目錄、frontmatter、傳參、預執行命令、預授權和調試。

    Claude0
  4. 04

    Claude Code 寫爬蟲與數據清洗:先查 robots.txt 和網站條款,控制頻率,原始數據留一份再清洗

    想讓 Claude Code 寫爬蟲抓數據再清洗。本文先講合規:robots.txt 不是授權也不是安全措施、網站條款要自己讀;再講怎麼用 Python 標準庫檢查規則、小樣本先試、儲存原始數據,以及用 pandas 清洗,附四段提示詞。

    Claude0
  5. 05

    Claude Code 寫 Chrome 擴展:按 Manifest V3 起步,加載未打包的擴展,改了哪些文件要重新加載

    想讓 Claude Code 幫你寫一個 Chrome 擴展。本文按 Chrome 官方擴展文檔講:manifest.json 的最小寫法、在 chrome://extensions 加載未打包的擴展、哪些改動要刷新、怎麼看控制檯和報錯,再給四段提示詞,以及權限要盡量少。

    Claude0
  6. 06

    Claude Code 寫安卓 App:Android Studio 建項目、讓它用 gradlew 編譯安裝,報錯和日誌怎麼餵給它

    想讓 Claude Code 幫你寫安卓 App。官方文檔沒有專門的安卓教學,本文把 Claude Code 官方工作流和安卓官方命令行文檔拼在一起:Android Studio 建項目、gradlew 編譯安裝、模擬器和真機、測試與日誌,附四段提示詞。

    Claude0

同產品的其他教學

  1. 01

    Claude Code 用數據庫 MCP 查數據、出報表:只讀帳號、先看口徑再看數字,結果別一次拉太多行

    想用自然語言讓 Claude Code 查數據庫、出統計報表,而不是寫後端接口。本文按官方 MCP 頁面和 DBHub 說明講:怎麼連 PostgreSQL、MySQL、SQLite、輸出太大怎麼辦、怎麼讓它先說明口徑、怎麼核對數字,附三段提示詞。

    Claude0
  2. 02

    Claude Code 配 Figma MCP 還原設計稿:插件或一條命令安裝,複製圖層連結,小塊小塊地讓它出代碼

    想讓 Claude Code 照 Figma 設計稿寫前端代碼。本文按 Figma 官方開發者文檔講:遠程伺服器地址、插件和手動兩種安裝、怎麼複製圖層連結、為什麼要選小塊、座位類型與調用次數限制,並給三段還原設計稿的提示詞。

    Claude0
  3. 03

    Claude Code 管理 GitHub issue:用 gh 命令還是 GitHub MCP,怎麼裝、怎麼限權、怎麼讓它分揀和回覆 issue

    讓 Claude Code 讀 issue、分揀標籤、起草回覆、關聯 PR,有兩條路:裝好 gh 命令行直接用,或連 GitHub 官方 MCP 伺服器。本文按兩邊官方文檔講安裝命令、令牌權限、只讀模式,並給出三段分揀提示詞和限權設定。

    Claude0
  4. 04

    Claude Code 配 Playwright MCP 做瀏覽器測試:一條命令安裝,讓它打開頁面、點按鈕、讀控制檯,再把流程寫成測試

    想讓 Claude Code 自己打開瀏覽器測試你的網頁。本文按微軟 Playwright MCP 官方倉庫和 Claude Code 官方 MCP 文檔講:安裝命令、怎麼確認連上、有頭無頭與隔離參數、一次測試的提示詞,以及它不是安全邊界這件事。

    Claude0
  5. 05

    Claude Code 寫文檔、README 和代碼註釋:先讓它讀代碼再動筆,指定風格,寫完逐條核對命令能不能跑

    想讓 Claude Code 給項目補 README、接口文檔和註釋,又怕它編造不存在的命令和參數。本文按官方「Handle documentation」工作流講:先找沒有文檔的代碼、指定風格、寫完核對,附四段可複製提示詞和驗證辦法。

    Claude0
  6. 06

    用 Claude Code 整理電腦文件、批量重命名、處理表格:先出清單再執行,副本操作和權限設定

    Claude Code 不只能寫代碼,官方說它能在任何文件夾裏搜尋、編輯和整理內容。本文講非程式員怎麼用它整理下載文件夾、批量重命名、處理表格:先出整理清單、用副本操作、權限怎麼設,附四段提示詞和撤銷辦法。

    Claude0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~