services: # MySQL 8.0.24 服务 mysql: build: context: ../config/mysql dockerfile: Dockerfile args: MYSQL_BASE_IMAGE: mysql:8.0.24 MYSQL_CONF: my.cnf.16c32g container_name: henan_mysql_db restart: unless-stopped environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: henan MYSQL_USER: henan MYSQL_PASSWORD: iTSJSPPZM3LSGAPC ports: - "127.0.0.1:23306:3306" volumes: - mysql_data:/var/lib/mysql logging: driver: json-file options: max-size: "50m" max-file: "3" healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p123456"] interval: 10s timeout: 5s retries: 5 start_period: 30s networks: - henan_app_network # Redis 服务 redis: image: redis:latest container_name: henan_redis_cache restart: unless-stopped command: redis-server /usr/local/etc/redis/redis.conf ports: - "127.0.0.1:26379:6379" logging: driver: json-file options: max-size: "50m" max-file: "3" networks: - henan_app_network # RabbitMQ 3.9 服务 rabbitmq: image: rabbitmq:3.9-management container_name: henan_rabbitmq_server restart: unless-stopped environment: RABBITMQ_DEFAULT_USER: skins RABBITMQ_DEFAULT_PASS: mk ports: - "127.0.0.1:25672:5672" - "127.0.0.1:35672:15672" command: > bash -c "rabbitmq-server & sleep 20 && rabbitmqctl add_vhost /skins && rabbitmqctl set_permissions -p /skins skins '.*' '.*' '.*' && rabbitmqadmin --vhost=/skins --username=skins --password=mk declare queue name=notice_queue durable=true && rabbitmqadmin --vhost=/skins --username=skins --password=mk declare queue name=dlk_queue durable=true && rabbitmqadmin --vhost=/skins --username=skins --password=mk declare queue name=delivery_queue durable=true && wait" logging: driver: json-file options: max-size: "50m" max-file: "3" networks: - henan_app_network # 定义数据卷(external 固定卷名,不随目录变化,防止换目录丢数据) volumes: mysql_data: external: true name: henan_mysql_data # 定义网络 networks: henan_app_network: driver: bridge