services: mysql: image: mysql:8.0 container_name: chatapp-test-mysql restart: unless-stopped command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci - --default-time-zone=+08:00 - --max_connections=300 - --innodb_buffer_pool_size=2G environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} TZ: Asia/Shanghai ports: - "127.0.0.1:3306:3306" volumes: - mysql-data:/var/lib/mysql - ./mysql/init:/docker-entrypoint-initdb.d:ro healthcheck: test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$${MYSQL_ROOT_PASSWORD} --silent"] interval: 10s timeout: 5s retries: 30 redis: image: redis:7.2-alpine container_name: chatapp-test-redis restart: unless-stopped command: > sh -lc 'if [ -n "$$REDIS_PASSWORD" ]; then exec redis-server --appendonly yes --requirepass "$$REDIS_PASSWORD"; else exec redis-server --appendonly yes; fi' environment: REDIS_PASSWORD: ${REDIS_PASSWORD} TZ: Asia/Shanghai ports: - "127.0.0.1:6379:6379" volumes: - redis-data:/data healthcheck: test: ["CMD-SHELL", "redis-cli ping | grep -q PONG"] interval: 10s timeout: 5s retries: 30 mongo: image: mongo:7.0 container_name: chatapp-test-mongo restart: unless-stopped environment: TZ: Asia/Shanghai ports: - "127.0.0.1:27017:27017" volumes: - mongo-data:/data/db healthcheck: test: ["CMD-SHELL", "mongosh --quiet --eval 'db.runCommand({ ping: 1 }).ok' | grep -q 1"] interval: 10s timeout: 5s retries: 30 nacos: image: nacos/nacos-server:v2.3.2 container_name: chatapp-test-nacos restart: unless-stopped environment: MODE: standalone PREFER_HOST_MODE: hostname NACOS_AUTH_ENABLE: "false" JVM_XMS: 512m JVM_XMX: 512m JVM_XMN: 256m TZ: Asia/Shanghai ports: - "127.0.0.1:8848:8848" - "127.0.0.1:9848:9848" volumes: - nacos-data:/home/nacos/data - nacos-logs:/home/nacos/logs healthcheck: test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:8848/nacos/v1/console/health/readiness | grep -Eq '^(UP|OK)$'"] interval: 10s timeout: 5s retries: 60 rocketmq-namesrv: image: apache/rocketmq:5.3.1 container_name: chatapp-test-rocketmq-namesrv user: root restart: unless-stopped command: sh mqnamesrv environment: JAVA_OPT_EXT: "-Xms256m -Xmx256m -Xmn128m" TZ: Asia/Shanghai ports: - "127.0.0.1:9876:9876" volumes: - rocketmq-namesrv-logs:/home/rocketmq/logs healthcheck: test: ["CMD-SHELL", "bash -lc '