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 条评论

登录 后参与评论

还没有评论,来抢沙发~