# 生产部署说明 目标访问地址: ```text http://hfb.221329.cc.cd:7890 ``` 生产部署只暴露宿主机 `7890` 端口,避免和服务器已有的 `80`、`443` 服务冲突。后端、MySQL、Redis、MinIO 均通过 Docker 内网通信。 ## 1. 准备环境变量 ```bash cp backend/.env.prod.example backend/.env ``` 编辑 `backend/.env`,至少替换以下占位值: ```text MYSQL_ROOT_PASSWORD MYSQL_PASSWORD MYSQL_DSN JWT_SECRET MINIO_ROOT_USER MINIO_ROOT_PASSWORD STORAGE_ACCESS_KEY_ID STORAGE_SECRET_ACCESS_KEY ``` 如果正式对外运营,还需要配置真实短信和实名服务,避免继续使用测试配置。 ## 2. 一键部署 ```bash ./scripts/deploy-prod.sh ``` 脚本会自动完成: - 检查 `backend/.env` 是否仍指向 `127.0.0.1`、`localhost` 或占位值。 - 构建并启动生产容器。 - 等待 MySQL、Redis、MinIO 就绪。 - 按顺序执行尚未应用的数据库迁移。 - 重启后端并检查 `http://127.0.0.1:7890/api/health`。 如需部署完成后直接跟随查看后端日志: ```bash ./scripts/deploy-prod.sh --logs ``` ## 3. 手动启动服务 ```bash docker compose -f deploy/docker-compose.prod.yml up -d --build ``` ## 4. 手动初始化数据库 将命令中的 `change-hfb-password` 替换为 `backend/.env` 里的 `MYSQL_PASSWORD`。 ```bash for file in backend/migrations/*.sql; do docker compose -f deploy/docker-compose.prod.yml exec -T mysql \ mysql -uhfb -pchange-hfb-password hfb_sys < "$file" done ``` ## 5. 验证 ```bash curl http://127.0.0.1:7890/health curl http://127.0.0.1:7890/api/health ``` 浏览器访问: ```text http://hfb.221329.cc.cd:7890 http://hfb.221329.cc.cd:7890/admin/login ``` 服务器安全组或防火墙需要放行 `7890/tcp`。