feat:自动构建

This commit is contained in:
wood911010 committed 2025-08-09 01:34:49 +08:00
1 parent 183f5e7896
commit 6bcd8f4d09
14 files changed
+752 -112

No files matched your search

+120
View File
@@ -0,0 +1,120 @@
# Docker 部署指南
本项目提供两种部署:开发环境与生产环境。以下说明已与当前 `docker-compose` 配置、镜像与反向代理实现对齐。
## 开发环境
使用 `docker compose`(Docker Desktop 或 Docker CE 20.10+):
```bash
# 启动(首次建议带 --build)
docker compose up -d --build
# 查看状态/日志
docker compose ps
docker compose logs -f backend
# 停止
docker compose down
```
### 访问地址(开发)
- 前端: http://localhost:18080
- 后端 API: http://localhost:18888
- MySQL: localhost:13306(数据库、用户、密码见 compose)
## 生产环境
使用 `docker-compose.prod.yml`:
```bash
# 启动生产环境
docker compose -f docker-compose.prod.yml up -d
# 查看服务状态
docker compose -f docker-compose.prod.yml ps
```
### 生产配置说明
- 后端配置文件已通过卷挂载至容器内:
- 开发:`backend/configs/config.dev.yaml` → 容器内 `/app/backend/cmd/config.yaml`
- 生产:`backend/configs/config.prod.yaml` → 容器内 `/app/backend/cmd/config.yaml`
- 前端 Nginx 反向代理已指向容器网络内的 `backend:18888`,无需依赖 `host.docker.internal`。
- 健康检查统一使用 `curl`,后端镜像已内置 `curl`。
- 如需隐藏后端对外端口,可在生产 compose 中移除后端端口映射,仅通过前端或网关暴露。
## 服务说明
### MySQL 8.0
- 端口:3306(生产)/ 13306(开发宿主机映射)
- 库:`license_manager`,用户:`license_user`
- 字符集/排序:`utf8mb4`/`utf8mb4_unicode_ci`
- 开启慢查询日志(生产)
### 后端服务
- 端口:18888
- 健康检查:`/health`
- 配置:通过卷挂载 `config.dev.yaml` / `config.prod.yaml` 为容器内 `config.yaml`
- 日志:标准输出 + `./logs` 挂载目录
### 前端服务
- 端口:80(生产)/ 18080(开发映射)
- 反向代理:`/api/` → `backend:18888`
- 静态资源:启用 Gzip 与长缓存
### Redis(可选,仅生产)
- 端口:6379,AOF 持久化
## 常用命令
```bash
# 重新构建镜像
docker compose build
# 启动指定服务
docker compose up -d mysql backend
# 进入容器
docker compose exec backend sh
docker compose exec mysql mysql -uroot -p
# 备份/恢复数据库
docker compose exec mysql mysqldump -uroot -p license_manager > backup.sql
docker compose exec -T mysql mysql -uroot -p license_manager < backup.sql
# 清理未使用资源
docker system prune -f
```
## 故障排查
1) MySQL 启动失败
```bash
docker compose logs mysql
docker compose down -v && docker compose up -d
```
2) 后端连接数据库失败
```bash
# 确认 MySQL 健康
docker compose ps
# 检查容器内配置(已挂载到 /app/backend/cmd/config.yaml)
docker compose exec backend cat /app/backend/cmd/config.yaml
```
3) 前端无法访问后端 API
```bash
# 容器内连通性
docker compose exec frontend sh -c "curl -sS http://backend:18888/health"
# 检查 nginx 配置
docker compose exec frontend cat /etc/nginx/conf.d/default.conf
```
## 注意事项
- 生产环境请修改默认账号、数据库口令与 JWT 秘钥(见 `backend/configs/config.prod.yaml`)。
- 如使用较新 Docker,YAML 顶部 `version` 字段会被忽略,可按需移除提示。
- `deploy.resources` 仅在 Swarm/K8s 生效,单机 Compose 可忽略。
- 如置于公网,建议仅暴露前端端口,通过前端或网关转发后端 API。