# 11.6 Docker 生产部署 :::tip 概述 `deploy/` 提供三位一体的容器化方案:多阶段 Dockerfile(精简镜像)、docker-compose.yaml(四服务编排)、nginx.conf(上传文件直供)。生产使用时叠加环境变量与安全加固。 ::: ## 组成 | 文件 | 作用 | |---|---| | Dockerfile | 多阶段:golang:1.27-alpine 编译 → alpine:3.22 运行(非 root、时区与证书、健康检查探 /api/health) | | docker-compose.yaml | admin-server + nginx + mysql + redis 编排;MySQL 首启自动建库、服务健康依赖 | | nginx.conf | upload 直供(temp 封禁、SVG 附件、大小限制) | ## 生产启动 ```bash cp .env.example .env # 修改全部密码/密钥/域名 # .env 中设置:JWT_SECRET 强随机、各密码、FILE_DOMAIN_URL=https://files.your-domain # 在项目根执行(compose 默认只找 deploy/.env,根目录 .env 须显式传入) docker compose --env-file .env -f deploy/docker-compose.yaml up -d --build ``` :::tip 数据库初始化 MySQL 数据卷为空时自动导入 `document/mysql/easygoadmin.gin.elevue.sql` 定稿脚本(仅首次执行一次), 无需手工导 SQL;已有数据卷不会补表,需重导时请先备份再清卷。 ::: ## 生产环境变量核对 compose 以 APP_ 规范键注入应用,`.env` 中的友好名经 `environment` 块映射: | 环境变量(.env 键) | 生产要求 | |---|---| | APP_APP_PROD | true(.env 中取消注释即可,compose 已透传) | | APP_GENERATOR_ENABLE | false(关闭代码生成器) | | APP_API_DOCS / APP_API_METRICS | false(关闭文档/指标端点) | | APP_DATABASE_DEFAULT_* | 内网地址与强密码 | | APP_REDIS_DEFAULT_PASS | 强密码 | | APP_JWT_SECRET(友好名 JWT_SECRET) | 强随机(非样例值) | | APP_FILE_UPLOADDIR / APP_FILE_DOMAINURL | 容器路径与 https 文件域址 | MySQL/Redis 端口 compose 默认仅绑回环(127.0.0.1)——保持该约束,勿映射到 0.0.0.0。 ## 卷与备份 | 卷/挂载 | 内容 | 备份 | |---|---|---| | mysql_data | 数据库 | 定期 mysqldump / 快照 | | redis_data | 缓存 | 可丢(重建即降级恢复) | | ../upload(bind,应用 rw / nginx ro) | 上传文件 | 宿主目录定期同步 | ## 前端容器化(可选) 前端为静态产物,推荐宿主 Nginx 或独立静态镜像服务 dist/,`/api` 反代 admin-server。 ## 升级 ```bash docker compose --env-file .env -f deploy/docker-compose.yaml pull # 如用镜像仓库 docker compose --env-file .env -f deploy/docker-compose.yaml up -d --build admin-server # 滚动重建应用 ``` 应用优雅关闭保证在途请求排空。 ## 相关 - [2.7 Docker 快速体验](/zh/quickstart/docker.html)(开发体验版) - [11.8 安全加固清单](/zh/deploy/security.html)