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

68 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 附件、大小限制) |
## 生产启动
```bash
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。
## 升级
```bash
docker compose pull(如用镜像仓库)或重新 build
docker compose up -d --build admin-server # 滚动重建应用
```
应用优雅关闭保证在途请求排空。
## 相关
- [2.7 Docker 快速体验](/zh/quickstart/docker.html)(开发体验版)
- [11.8 安全加固清单](/zh/deploy/security.html)