Files
easygoadmin-wiki/EasyGoAdmin_Gin_NaiveVue/zh/deploy/docker.md
T
2026-10-25 17:24:27 +08:00

2.1 KiB
Raw Blame History

11.6 Docker 生产部署

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

组成

文件 作用
Dockerfile 多阶段:golang:1.27-alpine 编译 → alpine:3.20 运行(带时区与证书)
docker-compose.yaml admin-server + nginx + mysql + redis 编排
nginx.conf upload 直供(temp 封禁、SVG 附件、大小限制)

生产启动

cp .env.example .env          # 修改全部密码/密钥/域名
# .env 中设置:JWT_SECRET 强随机、各密码、FILE_DOMAIN_URL=https://files.your-domain

cd deploy
docker compose up -d --build

# 首次初始化数据库
docker exec -i easygoadmin-mysql mysql -uroot -p<密码> \
  easygoadmin.gin.elevue < ../document/mysql/easygoadmin.gin.elevue.sql

生产环境变量核对

compose 以 APP_ 规范键注入应用:

环境变量 生产要求
APP_APP_PROD true(compose 中按需追加)
APP_DATABASE_DEFAULT_* 内网地址与强密码
APP_REDIS_DEFAULT_PASS 强密码
APP_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_data 上传文件 定期同步(应用写 + nginx 只读挂载)

前端容器化(可选)

前端为静态产物,推荐宿主 Nginx 或独立静态镜像服务 dist/,/api 反代 admin-server。

升级

docker compose pull(如用镜像仓库)或重新 build
docker compose up -d --build admin-server   # 滚动重建应用

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

相关