Skip to content

11.6 Docker 生产部署 ​

概述

deploy/ 提供三位一体的容器化方案:多阶段 Dockerfile(精简镜像)、docker-compose.yaml(四服务编排)、nginx.conf(上传文件直供)。生产使用时叠加环境变量与安全加固。

组成 ​

文件作用
Dockerfile多阶段:golang:1.27-alpine 编译 → alpine:3.22 运行(非 root、时区与证书、健康检查探 /api/health)
docker-compose.yamladmin-server + nginx + mysql + redis 编排;MySQL 首启自动建库、服务健康依赖
nginx.confupload 直供(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

数据库初始化

MySQL 数据卷为空时自动导入 document/mysql/easygoadmin.gin.elevue.sql 定稿脚本(仅首次执行一次), 无需手工导 SQL;已有数据卷不会补表,需重导时请先备份再清卷。

生产环境变量核对 ​

compose 以 APP_ 规范键注入应用,.env 中的友好名经 environment 块映射:

环境变量(.env 键)生产要求
APP_APP_PRODtrue(.env 中取消注释即可,compose 已透传)
APP_GENERATOR_ENABLEfalse(关闭代码生成器)
APP_API_DOCS / APP_API_METRICSfalse(关闭文档/指标端点)
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   # 滚动重建应用

应用优雅关闭保证在途请求排空。

相关 ​

小蚂蚁云团队 · 提供技术支持