version: '3' services: etcd: image: bitnami/etcd container_name: etcd environment: - TZ=Asia/Shanghai - ALLOW_NONE_AUTHENTICATION=yes #- ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379 - ETCD_ADVERTISE_CLIENT_URLS=http://127.0.0.1:2379 ports: - "2379:2379" # 宿主机可以通过127.0.0.1:2379访问etcd服务 restart: always etcdManage: image: evildecay/etcdkeeper container_name: etcdManage environment: - TZ=Asia/Shanghai ports: - "7000:8080" # 将容器的8080端口映射到宿主机的7000端口,便于web访问 depends_on: - etcd # 确保etcd容器先启动 restart: always zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka: image: wurstmeister/kafka ports: - "9092:9092" environment: KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 volumes: - /var/run/docker.sock:/var/run/docker.sock redis: image: redis:7.4.0 ports: - "6379:6379" restart: always mysql: image: mysql:8.0.34 environment: - MYSQL_ROOT_PASSWORD=rootpassword - MYSQL_DATABASE=tianyuanapi - MYSQL_USER=tianyuanapi - MYSQL_PASSWORD=g3h98u0291j ports: - "3307:3306" volumes: - mysql_data:/var/lib/mysql restart: always # Gateway service gateway: build: context: . dockerfile: ./apps/gateway/Dockerfile ports: - "10001:10001" environment: - ENV=production depends_on: - etcd - redis - mysql - user - sentinel # Admin service admin: build: context: . dockerfile: ./apps/admin/Dockerfile ports: - "10002:10002" environment: - ENV=production depends_on: - etcd - redis - mysql - user - sentinel # API service api: build: context: . dockerfile: ./apps/api/Dockerfile ports: - "10003:10003" environment: - ENV=production depends_on: - etcd - redis - mysql - user - sentinel - mqs - kafka # MQS service mqs: build: context: . dockerfile: ./apps/mqs/Dockerfile ports: - "12001:12001" environment: - ENV=production depends_on: - kafka - etcd - redis - user - sentinel # Sentinel service sentinel: build: context: . dockerfile: ./apps/sentinel/Dockerfile ports: - "11002:11002" environment: - ENV=production depends_on: - redis - mysql - etcd # User service user: build: context: . dockerfile: ./apps/user/Dockerfile ports: - "11001:11001" environment: - ENV=production depends_on: - mysql - redis - etcd volumes: mysql_data: driver: local