mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-11-08 11:26:36 +00:00
章节里写着「完整的文件如下」,仓库里配套的实际文件却已经和正文对不上。 这类漂移比正文里的笔误更隐蔽——读者按目录跑起来的是另一份东西。 - `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 就是教读者 自己创建的,属于设计而非缺失。
66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
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
|