这是 container/docker-compose.md 的每次改动内容,按时间从新到旧。其他文章一起提交的部分不会出现在这里。
#1
2026-10-18
+80
−0
docs: 新增容器/安全分类,补 Windows 组策略与 Linux 内核救援,共 11 篇
69302a9
new file mode 100644
@@ -0,0 +1,80 @@
+---
+tags: [Docker, Compose, 编排]
+order: 20
+---
+
+# Docker Compose 编排
+
+## 场景
+
+一个应用要连数据库、缓存、反向代理,几个容器一起起,手工 `docker run` 太麻烦。
+
+## 前置条件
+
+- 已装 Docker 和 compose 插件(`docker compose version`)
+- 目录规划好:配置文件、数据卷分开
+- 想清楚数据卷放哪,别用匿名卷
+
+## 配置
+
+```yaml
+# docker-compose.yml
+services:
+ db:
+ image: mysql:8.0
+ restart: always
+ environment:
+ MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS}
+ MYSQL_DATABASE: appdb
+ volumes:
+ - ./data/mysql:/var/lib/mysql
+ healthcheck:
+ test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
+ interval: 10s
+ retries: 5
+
+ app:
+ image: registry.corp.local/app:1.2.0
+ restart: always
+ depends_on:
+ db:
+ condition: service_healthy
+ environment:
+ DB_HOST: db
+ volumes:
+ - ./config:/app/config:ro
+ ports:
+ - "8080:8080"
+```
+
+```bash
+docker compose up -d
+docker compose ps
+docker compose logs -f app
+docker compose down # 保留数据
+docker compose down -v # 连数据卷一起删
+```
+
+## 验证
+
+```bash
+docker compose ps
+docker compose config # 渲染后的配置
+curl -I http://127.0.0.1:8080
+```
+
+## 回滚
+
+```bash
+docker compose down
+docker compose up -d # 回到上一个镜像版本前先改 image tag
+```
+
+## 坑
+
+- **`down -v` 会删掉命名卷**,数据全没,执行前看清。
+- `depends_on` 默认只等容器启动,不等服务就绪,要配 `healthcheck` + `condition`。
+- 相对路径 `./data` 是相对 compose 文件所在目录,不是当前目录。
+- 环境变量写在 `.env` 里不要提交到 Git。
+- 改完 compose 文件要 `up -d` 才会生效,只 `restart` 不改配置。
+- 多个 compose 项目在同一台机器上,项目名冲突会互相覆盖。