Files
niumalll/backend/README_DOCKER.md

189 lines
4.1 KiB
Markdown
Raw Normal View History

# Docker部署指南
本文档提供了使用Docker部署活牛采购智能数字化系统后端服务的详细步骤和配置说明。
## 前提条件
在开始部署前,请确保您的系统已安装以下软件:
- [Docker](https://docs.docker.com/get-docker/)
- [Docker Compose](https://docs.docker.com/compose/install/)
## 配置说明
### 环境变量配置
1. 复制`.env.docker`文件为`.env`
```bash
cp .env.docker .env
```
2. 根据您的实际需求修改`.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`: 您的实际环境变量配置(不在版本控制中)
## 部署步骤
### 首次部署
1. 确保您已完成上述环境变量配置
2. 在项目根目录(包含`docker-compose.yml`的目录)执行以下命令启动所有服务:
```bash
docker-compose up -d --build
```
此命令将:
- 构建Node.js应用镜像
- 拉取MySQL和Redis镜像
- 创建并启动所有容器
- 将容器连接到内部网络
3. 查看服务状态:
```bash
docker-compose ps
```
### 初始化数据库(如果需要)
如果您需要初始化数据库表结构和数据,可以使用以下命令运行数据迁移:
```bash
docker-compose exec backend npm run db:migrate
docker-compose exec backend npm run db:seed
```
## 常用命令
### 服务管理
- 启动所有服务:
```bash
docker-compose up -d
```
- 停止所有服务:
```bash
docker-compose down
```
- 重启所有服务:
```bash
docker-compose restart
```
- 查看服务日志:
```bash
docker-compose logs -f
```
- 查看特定服务日志:
```bash
docker-compose logs -f backend
```
### 进入容器
- 进入后端应用容器:
```bash
docker-compose exec backend sh
```
- 进入MySQL容器
```bash
docker-compose exec db mysql -u${DB_USERNAME} -p${DB_PASSWORD} ${DB_NAME}
```
### 数据库管理
- 运行数据迁移:
```bash
docker-compose exec backend npm run db:migrate
```
- 重置数据库(警告:这将删除所有数据):
```bash
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
```
## 参考文档
- [Docker官方文档](https://docs.docker.com/)
- [Docker Compose官方文档](https://docs.docker.com/compose/)