- 理解镜像、容器、Dockerfile 和构建上下文
- 为 Node.js 后端编写生产可用的 Dockerfile
- 理解多阶段构建、非 root 用户、健康检查和镜像体积优化
- 使用 docker-compose 启动后端、MySQL 和可选 Redis
- 理解容器端口、宿主机端口和容器网络
- 使用数据卷保存数据库数据并理解备份风险
- 通过环境变量配置服务和数据库连接
- 查看容器日志、重建镜像、重启服务
- 理解容器启动顺序、数据库健康检查和迁移执行时机
- 了解 GitHub Actions 自动部署基本流程
- 理解 CI/CD 中 secrets、构建缓存、回滚和失败通知
Docker
容器化 Node 后端
为 Express + MySQL 项目编写 Dockerfile 和 docker-compose.yml。
产出物一条 docker-compose up 即可启动后端和数据库。
排错
排查容器启动失败
模拟端口冲突、环境变量缺失、数据库连接失败,记录 docker compose logs 的排查路径。
产出物一份容器排错清单。
自动化
写一份自动部署草案
设计 push 到 main 后自动构建、上传服务器、重启服务的流程。
产出物一份 GitHub Actions 或手动部署步骤对照表。
Docker
Docker 生产化检查
检查 Dockerfile 是否使用 .dockerignore、多阶段构建、非 root 用户、健康检查、明确版本和安全的环境变量。
产出物一份 Dockerfile 生产化 Review 清单。
排错
Compose 健康检查
为 docker-compose 中的 api、mysql、redis 增加健康检查,并说明服务启动顺序和数据库迁移如何处理。
产出物一个带 healthcheck 的 docker-compose.yml 草案。
Day 1
Docker 核心概念
把镜像、容器、端口映射、数据卷这些概念和传统部署对应起来。
- 安装 Docker Desktop 或在服务器安装 Docker Engine
- 运行 hello-world 和 nginx 容器
- 练习 docker ps、logs、exec、stop、rm
- 画出宿主机端口到容器端口的访问路径
当天产出一份 Docker 概念速查笔记。
Day 2
为后端编写 Dockerfile
把 Node.js 服务的运行环境写进 Dockerfile,减少“我电脑能跑”的问题。
- 为 Express 项目编写 Dockerfile
- 配置 WORKDIR、COPY、npm ci、EXPOSE、CMD
- 了解多阶段构建和非 root 用户运行的价值
- 添加 .dockerignore,排除 node_modules 和日志
- 构建镜像并用 docker run 启动
当天产出一个能运行 Node 后端的 Docker 镜像。
Day 3
docker-compose 编排数据库
让后端和数据库一起启动,理解服务名、网络和环境变量。
- 编写 docker-compose.yml,包含 api 和 mysql 服务
- 为 MySQL 配置 volume 保存数据
- 让 api 通过 DATABASE_URL 连接 mysql 服务名
- 为数据库增加 healthcheck,并理解 depends_on 的边界
- 执行 docker compose up -d 并查看日志
当天产出一条命令启动后端和数据库。
Day 4
重建、迁移与排错
会处理容器启动失败、数据库未就绪、端口冲突和环境变量错误。
- 练习 docker compose logs -f api/mysql
- 执行重新构建和重启命令
- 处理数据库启动慢导致后端连接失败的问题
- 确认 migration 在启动前、启动时还是手动执行
- 记录常见错误和对应排查命令
当天产出一份 Docker 排错清单。
Day 5
自动化部署草案
不用一上来追求完美 CI/CD,先写清楚自动部署应该做哪些事。
- 设计 push main 后的构建、测试、上传、重启流程
- 了解 GitHub Actions secrets 保存密钥的方式
- 写一份手动部署和自动部署对照表
- 补充失败通知、回滚命令和镜像版本标记
- 让 AI Review 部署流程里的安全风险
当天产出一份 GitHub Actions 自动部署草案。
Docker 的价值是把运行环境写成代码,让部署更稳定,也让 AI 更容易生成一致的启动说明。
镜像
应用运行环境和代码的打包模板。
前端类比:类似构建产物加运行依赖的快照。
容器
从镜像启动出来的运行实例。
前端类比:类似一个隔离运行的服务进程。
docker-compose
用一个配置文件同时编排后端、数据库、缓存等多个服务。
前端类比:类似一次启动多个 npm script,但每个服务在自己的环境里。
数据卷
把容器里的持久数据保存到宿主机或 Docker 管理的 volume,避免容器重建后数据库丢失。
前端类比:类似把用户上传文件和数据库数据放在构建产物之外。
CI/CD
把测试、构建、发布和重启服务流程自动化,减少手动部署遗漏。
前端类比:类似前端 push 后自动 build 并发布静态资源。
多阶段构建
把安装依赖、构建和最终运行拆成不同阶段,减少生产镜像体积和暴露面。
前端类比:类似前端构建后只把 dist 产物发布出去,不带源码和开发依赖。
Healthcheck
容器自检命令,用来判断服务是否真正可用,而不仅仅是进程还在。
前端类比:类似访问 /health 确认 API 能正常响应。
Secrets
CI/CD 或容器平台保存密钥、SSH 私钥、数据库密码的安全机制。
前端类比:类似前端部署平台里的环境变量,但后端密钥权限更高。
常见坑点- 容器删除不等于数据删除,但数据库数据必须挂载数据卷
- 容器内端口和服务器映射端口要区分
- 不要把构建阶段和运行阶段混成臃肿镜像
- 生产环境环境变量和本地配置要分开
- 不要把 SSH 私钥、数据库密码写进 workflow 文件
- depends_on 不等于数据库已经可用,仍然需要健康检查或重试机制
- 容器里跑 root 用户会增加安全风险
- latest 标签不利于回滚,生产发布应该有明确版本
生成 Docker 配置
请为一个 Node.js Express + MySQL 项目写 Dockerfile 和 docker-compose.yml。要求后端服务监听 3000,MySQL 使用数据卷保存数据,后端通过环境变量连接数据库,给出启动、停止、查看日志、重新构建的命令,并说明生产环境还需要注意什么。
Docker 配置 Review
请 Review 下面的 Dockerfile 和 docker-compose.yml。重点检查镜像是否过大、是否泄露密钥、端口映射是否清晰、数据卷是否保存数据库数据、环境变量是否合理、生产环境是否存在风险。
生成自动部署草案
请为一个 Docker Compose 部署的后端项目设计 GitHub Actions 自动部署流程。要求先给流程图式步骤,再说明 secrets 需要配置哪些值,最后给出失败时如何回滚和查看日志。
Docker 生产化 Review
请 Review 下面的 Dockerfile、docker-compose.yml 和 GitHub Actions workflow。请重点检查多阶段构建、非 root 用户、.dockerignore、healthcheck、环境变量、secrets、数据卷、端口暴露、镜像 tag、数据库迁移、失败回滚和日志查看是否合理。
- 能解释镜像、容器、端口映射、数据卷
- 能运行 docker compose up 启动服务
- 能查看容器日志并重建镜像
- 能说明 healthcheck、secrets、镜像 tag 和回滚的作用
- 能让 AI 帮你生成并检查 Dockerfile
- 能写出一份基础自动部署流程