Files
docker_practice/11_compose/demo/wordpress/docker-compose.yml
T
yeasy 659473e6d8 fix(demo): 三个配套示例目录与其章节漂移,其中两处带真实后果
章节里写着「完整的文件如下」,仓库里配套的实际文件却已经和正文对不上。
这类漂移比正文里的笔误更隐蔽——读者按目录跑起来的是另一份东西。

- `11_compose/demo/django/Dockerfile` 用的是 `ENV PYTHONUNBUFFERED 1` 这种
  空格旧写法,而 7.6 节写着绝对规则:「已被官方弃用……`docker buildx build
  --check` 会直接把它标出来。**一律用等号**」。这是全仓唯一一处违反(已扫过
  全部 md 与 11 个 Dockerfile)。同文件还有三处与 11.6 节不符:`FROM python:3`
  (章节是 3.12-slim)、`pip install` 缺 `--no-cache-dir`(章节专门列表讲了
  它的作用)、requirements 用 psycopg2 而章节表格写着「推荐使用 psycopg 3」。
  按 11.6 同步,现与章节代码块逐字节一致。
- `07_dockerfile/multistage_example/laravel/Dockerfile` 与 7.18 节差三处,
  两处有实质后果:`chmod -R 777 storage`(章节是 `chown www-data` + `775`)
  —— 而 18.5 节正拿 `777` 当"全员读写权限"的风险范例;以及 `COPY composer.json`
  漏掉了 `composer.lock`,正好破坏该章论证的可复现性。第三处 nginx 标签
  1.30 与全书 20 处 1.28 不一致(且章节自己的注释就推荐 1.28-alpine)。
  同步后与章节仅差章节独有的那行说明性注释。
- `11_compose/demo/wordpress/docker-compose.yml` 的 wordpress 服务**完全没有
  `volumes:`**,而 11.8 节专门加粗警告过「`volumes` 配置很重要!没有它,每次
  容器重启数据都会丢失」并声明了 `wp_data`。该 demo 恰好演示了章节警告的那个
  故障。另外还缺 `wp_net`、两个 container_name、`WORDPRESS_DB_NAME` 与
  `uploads.ini` 挂载。按章节同步,并补上章节 11.8.3 已给出内容的 `uploads.ini`
  (否则挂载会指向不存在的文件)。同步后 YAML 实测可解析,volumes 为
  db_data + wp_data。

`secrets/` 目录未补:它被 .gitignore 有意排除,demo 的 README 就是教读者
自己创建的,属于设计而非缺失。
2026-09-04 14:56:23 -07:00

66 lines
1.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
services:
# 数据库服务
db:
image: mysql:8.4
container_name: wordpress_db
restart: always
command:
# 启用原生密码认证(MySQL 8.4 默认禁用,旧版 WP 兼容性需要)
- --mysql-native-password=ON
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD_FILE: /run/secrets/db_password
secrets:
- db_root_password
- db_password
volumes:
- db_data:/var/lib/mysql
networks:
- wp_net
# WordPress 服务
wordpress:
# 示例保留 latest 以便读者快速体验;生产环境请固定到经过测试的明确版本标签
image: wordpress:latest
container_name: wordpress_app
restart: always
ports:
# 本机调试入口;生产环境请通过反向代理发布 HTTPS
- "127.0.0.1:8000:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD_FILE: /run/secrets/db_password
WORDPRESS_DB_NAME: wordpress
secrets:
- db_password
volumes:
- wp_data:/var/www/html
# 增加上传文件大小限制
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
depends_on:
- db
networks:
- wp_net
volumes:
db_data: # 数据库持久化
wp_data: # WordPress 文件(插件/主题/上传)持久化
networks:
wp_net:
secrets:
db_root_password:
file: ./secrets/db_root_password.txt
db_password:
file: ./secrets/db_password.txt