阶段任务

0 项
  • 理解镜像、容器、Dockerfile 和构建上下文
  • 为 Node.js 后端编写生产可用的 Dockerfile
  • 理解多阶段构建、非 root 用户、健康检查和镜像体积优化
  • 使用 docker-compose 启动后端、MySQL 和可选 Redis
  • 理解容器端口、宿主机端口和容器网络
  • 使用数据卷保存数据库数据并理解备份风险
  • 通过环境变量配置服务和数据库连接
  • 查看容器日志、重建镜像、重启服务
  • 理解容器启动顺序、数据库健康检查和迁移执行时机
  • 了解 GitHub Actions 自动部署基本流程
  • 理解 CI/CD 中 secrets、构建缓存、回滚和失败通知

建议练习

0 项
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 标签不利于回滚,生产发布应该有明确版本

AI 协作提示词

生成 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
  • 能写出一份基础自动部署流程

推荐资源

进度数据