Files
niumalll/backend/README_DOCKER.md

4.1 KiB
Raw Permalink Blame History

Docker部署指南

本文档提供了使用Docker部署活牛采购智能数字化系统后端服务的详细步骤和配置说明。

前提条件

在开始部署前,请确保您的系统已安装以下软件:

配置说明

环境变量配置

  1. 复制.env.docker文件为.env
cp .env.docker .env
  1. 根据您的实际需求修改.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的目录)执行以下命令启动所有服务:

docker-compose up -d --build

此命令将:

  • 构建Node.js应用镜像
  • 拉取MySQL和Redis镜像
  • 创建并启动所有容器
  • 将容器连接到内部网络
  1. 查看服务状态:
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

参考文档