Docker 部署 PHP、MySQL 与前端:从 Compose 到生产边界
文章定位:Docker、Compose、PHP、MySQL、卷、网络和健康检查

核心结论
容器解决构建和运行环境一致性,不自动解决安全、备份、监控和高可用。数据库数据需要独立卷和恢复演练,生产 secrets 不能写入镜像。
yaml
services:
app:
build: ./docker/app
env_file: .env
depends_on:
db:
condition: service_healthy
db:
image: mysql:8.4
volumes:
- db-data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
volumes:
db-data:版本固定到验证过的镜像,不使用 latest。数据库只加入内部网络,配置通过环境变量或 secrets 注入,日志输出到标准输出并由平台收集。
镜像使用多阶段构建、非 root 用户、最小基础镜像和依赖扫描。数据库卷不是备份,必须定期导出并在隔离环境恢复。
