Docker Compose 实战:一键编排博客前端、后端与 Nginx

讲清 Compose 文件如何组织服务、环境变量、网络、数据卷、健康检查和上线验收。

已发布文章云原生与运维入门5 分钟阅读发布于 2026年9月3日更新于 2026年9月4日
文章目录
  1. 它从哪里来
  2. Compose 文件应该描述什么
  3. 一个简化版结构
  4. depends_on 不是健康保证
  5. 环境变量放哪里
  6. Compose 常用命令
  7. Compose 的上线验收
知识目录Docker 从入门到生产部署7 / 14
LOCAL NOTE高亮并记笔记
0 / 1000 · 只保存在这台设备
READER NOTESDocker Compose 实战:一键编排博客前端、后端与 Nginx》的本机笔记

动手前先知道

这篇文章对应的真实任务是:讲清 Compose 文件如何组织服务、环境变量、网络、数据卷、健康检查和上线验收。

第一次阅读先弄清“为什么需要这一步、它改变了哪个运行对象、失败时去哪里检查”,再执行命令。命令可以查,运行模型和排障路径才是长期能力。

Docker Compose 是个人项目部署最实用的工具之一。它不复杂,但能把“前端、后端、Nginx、数据库、环境变量、网络、数据卷”组织成一套可重复运行的系统。

它从哪里来

Docker Compose 的前身之一是 Fig。Docker 在 2014 年收购相关团队后将它发展为 Compose,让多容器应用可以用一份 YAML 描述。它解决的不是“少敲几条命令”,而是把服务依赖、网络、数据卷与启动参数变成可重复的项目配置。

Compose 文件应该描述什么

一个完整的 Compose 文件至少应该描述:

  • 服务名。
  • 镜像或构建路径。
  • 环境变量。
  • 端口。
  • 网络。
  • 数据卷。
  • 重启策略。
  • 健康检查。

小艾知行录的核心服务可以这样理解:

nginx:唯一公网入口
web:Next.js 页面服务
api:Go API 服务
mysql:数据库

一个简化版结构

services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - web
      - api

  web:
    image: xiaoai-blog-web:2026-09-03
    environment:
      - API_BASE_URL=http://api:8080

  api:
    image: xiaoai-blog-api:2026-09-03
    env_file:
      - .env.production

  mysql:
    image: mysql:8
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:

这不是最终生产文件,但能说明服务关系。

depends_on 不是健康保证

depends_on 只能保证启动顺序,不保证数据库已经可用。

也就是说,apimysql 后启动,不代表 MySQL 已经完成初始化。

更稳的做法是:

  • 后端连接数据库时做重试。
  • MySQL 配置 healthcheck。
  • 上线脚本里做健康检查。

环境变量放哪里

建议:

.env.production.example 进仓库
.env.production 不进仓库

example 文件告诉自己和未来维护者需要哪些配置;真实文件只放服务器。

配置可以包括:

  • 数据库地址。
  • 数据库账号。
  • JWT 密钥。
  • COS 配置。
  • AI 模型 Key。
  • 前端访问地址。
  • CORS 允许域名。

Compose 常用命令

启动:

docker compose up -d

查看状态:

docker compose ps

查看日志:

docker compose logs -f api
docker compose logs -f web
docker compose logs -f nginx

重启某个服务:

docker compose restart api

停止整套服务:

docker compose down

如果生产数据库在 Compose 里,执行 down -v 要极其谨慎,因为它会删除 volume。

Compose 的上线验收

Compose 启动后,不要只看容器是 running。

还要检查:

curl -I http://127.0.0.1
curl http://127.0.0.1/api/v1/health
docker compose logs --tail=100 api
docker compose logs --tail=100 nginx

真正上线前,要确保:

  • 页面返回 200。
  • API 健康检查正常。
  • 后端能连接数据库。
  • 静态资源加载正常。
  • 管理端登录正常。
  • 图片上传正常。
  • 搜索正常。

这些都通过,才算 Compose 部署完成。

JARVIS · 当前文章

有哪里没看懂?可以只问这篇。

Jarvis 会限定在《Docker Compose 实战:一键编排博客前端、后端与 Nginx》及其公开关联内容中检索,并把引用定位回原文章节。

JARVIS / ARTICLE针对《Docker Compose 实战:一键编排博客前端、后端与 Nginx》提问
当前范围Docker Compose 实战:一键编排博客前端、后端与 Nginx不会悄悄扩大到全站
0 / 1000

准备好了。当前只会围绕Docker Compose 实战:一键编排博客前端、后端与 Nginx回答。

READER SIGNAL

这篇内容对你有帮助吗?

不需要登录。你的反馈会直接进入作者待处理列表。