首页
/ 深入解析testing-nestjs项目中的Docker Compose配置

深入解析testing-nestjs项目中的Docker Compose配置

2025-07-10 04:22:49作者:凤尚柏Louis

项目背景

testing-nestjs项目是一个用于演示NestJS框架与多种数据库集成的测试环境。该项目通过Docker Compose配置了完整的开发环境,让开发者能够快速搭建包含多种数据库服务的本地测试平台。

Docker Compose配置详解

该项目的docker-compose.yml文件定义了多个服务容器,每个容器都对应一种数据库类型,为NestJS应用提供了全面的数据库支持环境。

版本声明

version: '3'

使用Docker Compose文件格式版本3,这是目前广泛使用的稳定版本,支持大多数现代Docker功能。

数据库服务配置

1. Prisma专用的PostgreSQL服务

prisma-postgres:
  image: postgres
  ports:
    - '5433:5432'
  environment:
    - POSTGRES_USER=postgres
    - POSTGRES_PASSWORD=postgres
    - POSTGRES_DB=prisma
  • 端口映射:5433→5432,避免与标准PostgreSQL端口冲突
  • 环境变量:配置了默认用户(postgres)、密码(postgres)和数据库名称(prisma)
  • 用途:专门为Prisma ORM工具提供PostgreSQL数据库支持

2. TypeORM专用的PostgreSQL服务

typeorm-postgres:
  image: postgres
  ports:
    - '5432:5432'
  environment:
    - POSTGRES_USER=postgres
    - POSTGRES_PASSWORD=postgres
    - POSTGRES_DB=typeorm
  • 标准端口:5432→5432,使用PostgreSQL默认端口
  • 环境变量:配置了与Prisma服务相同的认证信息,但数据库名称为typeorm
  • 用途:为TypeORM提供独立的PostgreSQL数据库实例

3. Redis服务

redis:
  image: redis
  ports:
    - '6379:6379'
  • 标准配置:使用官方Redis镜像,暴露默认6379端口
  • 用途:为应用提供缓存、会话存储或消息队列服务

4. MongoDB服务

mongodb:
  image: mongo
  ports:
    - '27017:27017'
  • 标准配置:使用官方MongoDB镜像,暴露默认27017端口
  • 用途:为应用提供文档型数据库支持

5. MySQL服务

mysql:
  image: mysql:5.7.31
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: test
  ports:
    - '3306:3306'
  • 特定版本:使用MySQL 5.7.31版本
  • 环境变量:配置root密码(root)和默认数据库(test)
  • 标准端口:3306→3306
  • 用途:为应用提供关系型数据库支持

技术要点解析

  1. 多数据库隔离:项目为不同的ORM工具(Prisma和TypeORM)配置了独立的PostgreSQL实例,避免了测试时的相互干扰。

  2. 端口规划

    • PostgreSQL标准端口(5432)分配给TypeORM
    • 5433端口分配给Prisma
    • 其他数据库使用各自的标准端口
  3. 版本控制:MySQL服务明确指定了5.7.31版本,确保测试环境的一致性。

  4. 最小化配置:每个服务只配置了必要参数,保持了配置的简洁性。

实际应用建议

  1. 开发环境搭建:直接运行docker-compose up -d即可启动所有数据库服务。

  2. 连接配置:在NestJS应用中,可以根据需要配置不同数据库的连接信息:

    • Prisma PostgreSQL: localhost:5433
    • TypeORM PostgreSQL: localhost:5432
    • Redis: localhost:6379
    • MongoDB: localhost:27017
    • MySQL: localhost:3306
  3. 数据持久化:如需持久化数据,可以为每个服务添加volumes配置。

  4. 资源限制:在资源有限的开发机上,可以考虑添加资源限制参数。

扩展思考

这种多数据库的Docker Compose配置特别适合以下场景:

  • 需要测试应用对不同数据库的兼容性
  • 开发多数据源的应用
  • 学习不同ORM工具的使用
  • 进行数据库性能对比测试

通过这个配置,开发者可以轻松地在本地搭建一个包含多种数据库的完整测试环境,大大提高了开发效率。