68 lines
2.1 KiB
Markdown
68 lines
2.1 KiB
Markdown
# 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)
|