Files
license-manager/README-Docker.md
T
2025-08-09 01:34:49 +08:00

3.4 KiB
Raw Permalink Blame History

Docker 部署指南

本项目提供两种部署:开发环境与生产环境。以下说明已与当前 docker-compose 配置、镜像与反向代理实现对齐。

开发环境

使用 docker compose(Docker Desktop 或 Docker CE 20.10+):

# 启动(首次建议带 --build)
docker compose up -d --build

# 查看状态/日志
docker compose ps
docker compose logs -f backend

# 停止
docker compose down

访问地址(开发)

生产环境

使用 docker-compose.prod.yml:

# 启动生产环境
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 持久化

常用命令

# 重新构建镜像
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 启动失败
docker compose logs mysql
docker compose down -v && docker compose up -d
  1. 后端连接数据库失败
# 确认 MySQL 健康
docker compose ps

# 检查容器内配置(已挂载到 /app/backend/cmd/config.yaml)
docker compose exec backend cat /app/backend/cmd/config.yaml
  1. 前端无法访问后端 API
# 容器内连通性
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。