version: '3.9' services: box-redis: image: redis:7 restart: unless-stopped ports: - '6379:6379' healthcheck: test: ["CMD", "redis-cli", "-h", "127.0.0.1", "ping"] interval: 10s timeout: 5s retries: 5 volumes: - redis_data:/data networks: - box-network box-rabbitmq: image: rabbitmq:3.12-management restart: unless-stopped ports: - '5672:5672' - '15672:15672' environment: RABBITMQ_DEFAULT_USER: boxrabbit RABBITMQ_DEFAULT_PASS: BoxRabbit2025 RABBITMQ_DEFAULT_VHOST: / healthcheck: test: ["CMD", "rabbitmq-diagnostics", "status"] interval: 10s timeout: 5s retries: 5 volumes: - rabbitmq_data:/var/lib/rabbitmq networks: - box-network box-mongodb: image: mongo:7 restart: unless-stopped command: ["mongod", "--replSet", "rs0", "--bind_ip_all"] ports: - '27017:27017' environment: MONGO_INITDB_ROOT_USERNAME: boxadmin MONGO_INITDB_ROOT_PASSWORD: boxpass MONGO_INITDB_DATABASE: box_admin healthcheck: test: ["CMD", "mongo", "--quiet", "--eval", "db.adminCommand('ping')", "-u", "boxadmin", "-p", "boxpass", "--authenticationDatabase", "admin"] interval: 10s timeout: 5s retries: 5 volumes: - mongo_data:/data/db - ./docker/mongo/init-repl.js:/docker-entrypoint-initdb.d/init-repl.js:ro networks: - box-network box-mysql: image: mysql:8 restart: unless-stopped profiles: - migration ports: - '3306:3306' environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: box_admin healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"] interval: 10s timeout: 5s retries: 5 volumes: - mysql_data:/var/lib/mysql networks: - box-network box-mgnt-api: build: context: . dockerfile: apps/box-mgnt-api/Dockerfile ports: - '3300:3300' env_file: - .env.docker environment: NODE_ENV: development APP_HOST: 0.0.0.0 APP_PORT: 3300 APP_CORS_ORIGIN: '*' REDIS_DB: 0 REDIS_TLS: 'false' depends_on: box-redis: condition: service_healthy box-rabbitmq: condition: service_healthy box-mongodb: condition: service_healthy networks: - box-network box-app-api: build: context: . dockerfile: apps/box-app-api/Dockerfile ports: - '3301:3301' env_file: - .env.docker environment: NODE_ENV: development APP_HOST: 0.0.0.0 APP_PORT: 3301 APP_CORS_ORIGIN: '*' REDIS_DB: 1 REDIS_TLS: 'false' depends_on: box-redis: condition: service_healthy box-rabbitmq: condition: service_healthy box-mongodb: condition: service_healthy networks: - box-network box-stats-api: build: context: . dockerfile: apps/box-stats-api/Dockerfile ports: - '3302:3302' env_file: - .env.docker environment: NODE_ENV: development APP_HOST: 0.0.0.0 APP_PORT: 3302 APP_CORS_ORIGIN: '*' REDIS_DB: 2 REDIS_TLS: 'false' depends_on: box-redis: condition: service_healthy box-rabbitmq: condition: service_healthy box-mongodb: condition: service_healthy networks: - box-network volumes: redis_data: rabbitmq_data: mongo_data: mysql_data: networks: box-network: driver: bridge