4.1 KiB
4.1 KiB
Docker部署指南
本文档提供了使用Docker部署活牛采购智能数字化系统后端服务的详细步骤和配置说明。
前提条件
在开始部署前,请确保您的系统已安装以下软件:
配置说明
环境变量配置
- 复制
.env.docker文件为.env:
cp .env.docker .env
- 根据您的实际需求修改
.env文件中的配置项:
# 数据库配置
DB_USERNAME=niumall_user # MySQL用户名
DB_PASSWORD=niumall_password # MySQL密码
DB_NAME=niumall_prod # MySQL数据库名
# JWT配置
JWT_SECRET=your_secure_jwt_secret_key_change_this_in_production # JWT密钥,请务必在生产环境中更换为安全的密钥
# 其他配置保持默认即可
目录结构说明
部署相关的主要文件:
Dockerfile: 定义如何构建Node.js应用镜像docker-compose.yml: 定义多容器应用的配置.env.docker: Docker环境变量配置示例.env: 您的实际环境变量配置(不在版本控制中)
部署步骤
首次部署
-
确保您已完成上述环境变量配置
-
在项目根目录(包含
docker-compose.yml的目录)执行以下命令启动所有服务:
docker-compose up -d --build
此命令将:
- 构建Node.js应用镜像
- 拉取MySQL和Redis镜像
- 创建并启动所有容器
- 将容器连接到内部网络
- 查看服务状态:
docker-compose ps
初始化数据库(如果需要)
如果您需要初始化数据库表结构和数据,可以使用以下命令运行数据迁移:
docker-compose exec backend npm run db:migrate
docker-compose exec backend npm run db:seed
常用命令
服务管理
- 启动所有服务:
docker-compose up -d
- 停止所有服务:
```bash
docker-compose down
- 重启所有服务:
docker-compose restart
- 查看服务日志:
```bash
docker-compose logs -f
- 查看特定服务日志:
docker-compose logs -f backend
### 进入容器
- 进入后端应用容器:
```bash
docker-compose exec backend sh
- 进入MySQL容器:
docker-compose exec db mysql -u${DB_USERNAME} -p${DB_PASSWORD} ${DB_NAME}
### 数据库管理
- 运行数据迁移:
```bash
docker-compose exec backend npm run db:migrate
- 重置数据库(警告:这将删除所有数据):
docker-compose exec backend npm run db:reset
## 数据持久化
本配置使用Docker数据卷确保数据持久化:
- `mysql-data`: 存储MySQL数据库数据
- `redis-data`: 存储Redis数据
- `./logs:/app/logs`: 映射日志目录到主机
## 服务访问
部署完成后,您可以通过以下地址访问服务:
- API服务:`http://服务器IP:4330`
- 健康检查:`http://服务器IP:4330/health`
## 生产环境注意事项
1. **安全配置**:
- 务必修改`.env`文件中的`JWT_SECRET`为安全的随机字符串
- 不要使用默认的数据库密码
- 考虑配置HTTPS代理(如Nginx)
2. **资源限制**:
- 为生产环境配置适当的容器资源限制
- 调整MySQL和Redis的配置以优化性能
3. **备份策略**:
- 定期备份MySQL数据卷
- 考虑实现日志轮转和清理策略
4. **监控**:
- 配置适当的监控解决方案,如Prometheus和Grafana
- 设置日志聚合系统
## 常见问题排查
1. **服务启动失败**:
- 检查环境变量配置是否正确
- 查看容器日志获取详细错误信息
2. **数据库连接问题**:
- 确认`DB_HOST`设置为`db`(Docker Compose服务名称)
- 检查数据库凭证是否正确
3. **端口冲突**:
- 如果主机端口4330、3306或6379已被占用,可以修改`docker-compose.yml`中的端口映射
## 更新部署
当代码更新后,执行以下命令更新部署:
```bash
docker-compose up -d --build backend