name: chatapp3-local x-env-file: &env-file env_file: - ./.env.local x-java-environment: &java-environment JAVA_OPTS: ${LIKEI_LOCAL_JAVA_OPTS:--Xms128m -Xmx512m} FEIGN_GATEWAY_URL: http://gateway:1100 FEIGN_AUTH_URL: http://auth:1000 FEIGN_WALLET_URL: http://wallet:2000 FEIGN_OTHER_URL: http://other:2400 FEIGN_LIVE_URL: http://live:2500 FEIGN_ORDER_URL: http://order:2600 FEIGN_CONSOLE_URL: http://console:2700 FEIGN_EXTERNAL_URL: http://external:3000 x-java-service: &java-service <<: *env-file image: eclipse-temurin:17-jre restart: unless-stopped working_dir: /app environment: <<: *java-environment command: - sh - -c - java $$JAVA_OPTS -jar /app/app.jar networks: - localnet services: mysql: <<: *env-file image: mysql:8.4 container_name: chatapp3-local-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${LIKEI_LOCAL_MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${LIKEI_LOCAL_MYSQL_DATABASE} TZ: ${TZ} command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci - --default-time-zone=+08:00 - --mysql-native-password=ON ports: - "${LIKEI_LOCAL_MYSQL_EXPOSE_PORT}:3306" volumes: - chatapp3-local-mysql-data:/var/lib/mysql - ./local-infra/mysql/init:/docker-entrypoint-initdb.d:ro healthcheck: test: ["CMD-SHELL", "mysqladmin ping -uroot -p${LIKEI_LOCAL_MYSQL_ROOT_PASSWORD} --silent"] interval: 5s timeout: 5s retries: 30 networks: - localnet redis: <<: *env-file image: redis:7-alpine container_name: chatapp3-local-redis restart: unless-stopped command: ["redis-server", "--appendonly", "yes"] ports: - "${LIKEI_LOCAL_REDIS_EXPOSE_PORT}:6379" volumes: - chatapp3-local-redis-data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 30 networks: - localnet mongo: <<: *env-file image: mongo:7.0 container_name: chatapp3-local-mongo restart: unless-stopped environment: MONGO_INITDB_ROOT_USERNAME: ${LIKEI_LOCAL_MONGO_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${LIKEI_LOCAL_MONGO_ROOT_PASSWORD} TZ: ${TZ} ports: - "${LIKEI_LOCAL_MONGO_EXPOSE_PORT}:27017" volumes: - chatapp3-local-mongo-data:/data/db healthcheck: test: [ "CMD-SHELL", "mongosh --quiet mongodb://${LIKEI_LOCAL_MONGO_ROOT_USERNAME}:${LIKEI_LOCAL_MONGO_ROOT_PASSWORD}@127.0.0.1:27017/admin --eval 'db.runCommand({ ping: 1 }).ok' | grep -q 1", ] interval: 5s timeout: 5s retries: 30 networks: - localnet nacos: <<: *env-file image: nacos/nacos-server:v2.4.0 container_name: chatapp3-local-nacos restart: unless-stopped environment: MODE: standalone PREFER_HOST_MODE: hostname TZ: ${TZ} NACOS_AUTH_ENABLE: ${LIKEI_LOCAL_NACOS_AUTH_ENABLE} JVM_XMS: ${LIKEI_LOCAL_NACOS_JVM_XMS} JVM_XMX: ${LIKEI_LOCAL_NACOS_JVM_XMX} JVM_XMN: ${LIKEI_LOCAL_NACOS_JVM_XMN} ports: - "${LIKEI_LOCAL_NACOS_PORT}:8848" - "${LIKEI_LOCAL_NACOS_CONSOLE_PORT}:8080" - "${LIKEI_LOCAL_NACOS_CLIENT_GRPC_PORT}:9848" networks: - localnet zookeeper: <<: *env-file image: zookeeper:3.9 container_name: chatapp3-local-zookeeper restart: unless-stopped environment: TZ: ${TZ} ports: - "${LIKEI_LOCAL_ZOOKEEPER_EXPOSE_PORT}:2181" networks: - localnet rocketmq-namesrv: <<: *env-file image: apache/rocketmq:${LIKEI_LOCAL_ROCKETMQ_IMAGE_TAG:-5.3.2} container_name: chatapp3-local-rocketmq-namesrv restart: unless-stopped command: ["sh", "mqnamesrv"] environment: TZ: ${TZ} JAVA_OPT_EXT: ${LIKEI_LOCAL_ROCKETMQ_NAMESRV_JAVA_OPTS:--Xms128m -Xmx128m -Xmn64m} ports: - "${LIKEI_LOCAL_ROCKETMQ_NAMESRV_PORT}:9876" networks: - localnet rocketmq-init: <<: *env-file image: apache/rocketmq:${LIKEI_LOCAL_ROCKETMQ_IMAGE_TAG:-5.3.2} container_name: chatapp3-local-rocketmq-init restart: "no" user: root command: - sh - -c - mkdir -p /home/rocketmq/store && chown -R rocketmq:root /home/rocketmq/store volumes: - chatapp3-local-rocketmq-store:/home/rocketmq/store networks: - localnet rocketmq-broker: <<: *env-file image: apache/rocketmq:${LIKEI_LOCAL_ROCKETMQ_IMAGE_TAG:-5.3.2} container_name: chatapp3-local-rocketmq-broker restart: unless-stopped depends_on: rocketmq-namesrv: condition: service_started rocketmq-init: condition: service_completed_successfully command: ["sh", "mqbroker", "-n", "rocketmq-namesrv:9876", "-c", "/home/rocketmq/rocketmq-5.3.2/conf/broker.conf"] environment: TZ: ${TZ} NAMESRV_ADDR: rocketmq-namesrv:9876 JAVA_OPT_EXT: ${LIKEI_LOCAL_ROCKETMQ_BROKER_JAVA_OPTS:--Xms256m -Xmx256m -Xmn128m} volumes: - ./local-infra/rocketmq/broker.conf:/home/rocketmq/rocketmq-5.3.2/conf/broker.conf:ro - chatapp3-local-rocketmq-store:/home/rocketmq/store networks: - localnet rocketmq-proxy: <<: *env-file image: apache/rocketmq:${LIKEI_LOCAL_ROCKETMQ_IMAGE_TAG:-5.3.2} container_name: chatapp3-local-rocketmq-proxy restart: unless-stopped depends_on: - rocketmq-namesrv - rocketmq-broker command: ["/bin/sh", "/opt/rocketmq-ext/start-proxy.sh"] environment: TZ: ${TZ} NAMESRV_ADDR: rocketmq-namesrv:9876 ROCKETMQ_CLUSTER_NAME: DefaultCluster ROCKETMQ_BOOTSTRAP_TOPICS: DefaultHeartBeatSyncerTopic,RC_DEFAULT_APP_ORDER,RC_DEFAULT_APP_ORDINARY,RC_DEFAULT_APP_DELAYED JAVA_OPT_EXT: ${LIKEI_LOCAL_ROCKETMQ_PROXY_JAVA_OPTS:--Xms128m -Xmx256m -Xmn64m} ports: - "${LIKEI_LOCAL_ROCKETMQ_PROXY_HTTP_PORT}:8080" - "${LIKEI_LOCAL_ROCKETMQ_PROXY_GRPC_PORT}:8081" volumes: - ./local-infra/rocketmq/start-proxy.sh:/opt/rocketmq-ext/start-proxy.sh:ro networks: - localnet gateway: <<: *java-service container_name: chatapp3-local-gateway depends_on: - nacos environment: <<: *java-environment FEIGN_AUTH_URL: http://rc-auth ports: - "${LIKEI_LOCAL_GATEWAY_PORT}:1100" volumes: - ${LIKEI_LOCAL_JAVA_REPO_DIR:-../../chatapp3/chatapp3-java}/rc-gateway/target/rc-gateway-1.0.0-local.jar:/app/app.jar:ro auth: <<: *java-service container_name: chatapp3-local-auth depends_on: - nacos ports: - "${LIKEI_LOCAL_AUTH_PORT}:1000" volumes: - ${LIKEI_LOCAL_JAVA_REPO_DIR:-../../chatapp3/chatapp3-java}/rc-auth/target/rc-auth-1.0.0-local.jar:/app/app.jar:ro external: <<: *java-service container_name: chatapp3-local-external depends_on: - nacos ports: - "${LIKEI_LOCAL_EXTERNAL_PORT}:3000" volumes: - ${LIKEI_LOCAL_JAVA_REPO_DIR:-../../chatapp3/chatapp3-java}/rc-service/rc-service-external/external-start/target/rc-service-external-1.0.0-local.jar:/app/app.jar:ro other: <<: *java-service container_name: chatapp3-local-other depends_on: - nacos - mongo environment: <<: *java-environment JAVA_OPTS: "${LIKEI_LOCAL_OTHER_JAVA_OPTS:--Xms128m -Xmx512m} ${LIKEI_LOCAL_OTHER_JAVA_OPTS_EXTRA:-}" ports: - "${LIKEI_LOCAL_OTHER_PORT}:2400" volumes: - ${LIKEI_LOCAL_JAVA_REPO_DIR:-../../chatapp3/chatapp3-java}/rc-service/rc-service-other/other-start/target/rc-service-other-1.0.0-local.jar:/app/app.jar:ro live: <<: *java-service container_name: chatapp3-local-live depends_on: - nacos - mongo ports: - "${LIKEI_LOCAL_LIVE_PORT}:2500" volumes: - ${LIKEI_LOCAL_JAVA_REPO_DIR:-../../chatapp3/chatapp3-java}/rc-service/rc-service-live/live-start/target/rc-service-live-1.0.0-local.jar:/app/app.jar:ro order: <<: *java-service container_name: chatapp3-local-order depends_on: - nacos - mongo ports: - "${LIKEI_LOCAL_ORDER_PORT}:2600" volumes: - ${LIKEI_LOCAL_JAVA_REPO_DIR:-../../chatapp3/chatapp3-java}/rc-service/rc-service-order/order-start/target/rc-service-order-1.0.0-local.jar:/app/app.jar:ro wallet: <<: *java-service container_name: chatapp3-local-wallet depends_on: - nacos - mongo ports: - "${LIKEI_LOCAL_WALLET_PORT}:2000" volumes: - ${LIKEI_LOCAL_JAVA_REPO_DIR:-../../chatapp3/chatapp3-java}/rc-service/rc-service-wallet/wallet-start/target/rc-service-wallet-1.0.0-local.jar:/app/app.jar:ro console: <<: *java-service container_name: chatapp3-local-console depends_on: - nacos - mongo ports: - "${LIKEI_LOCAL_CONSOLE_PORT}:2700" volumes: - ${LIKEI_LOCAL_JAVA_REPO_DIR:-../../chatapp3/chatapp3-java}/rc-service/rc-service-console/console-start/target/rc-service-console-1.0.0-local.jar:/app/app.jar:ro visual-monitor: <<: *java-service container_name: chatapp3-local-visual-monitor depends_on: - nacos ports: - "${LIKEI_LOCAL_VISUAL_MONITOR_PORT}:8000" volumes: - ${LIKEI_LOCAL_JAVA_REPO_DIR:-../../chatapp3/chatapp3-java}/rc-visual/visual-monitor/target/visual-monitor-1.0.0-local.jar:/app/app.jar:ro scheduling: <<: *java-service container_name: chatapp3-local-scheduling depends_on: - nacos - zookeeper environment: <<: *java-environment JAVA_OPTS: ${LIKEI_LOCAL_SCHEDULING_JAVA_OPTS:--Xms128m -Xmx384m} ports: - "${LIKEI_LOCAL_SCHEDULING_PORT}:2800" volumes: - ${LIKEI_LOCAL_JAVA_REPO_DIR:-../../chatapp3/chatapp3-java}/rc-scheduling/target/rc-scheduling-1.0.0-local.jar:/app/app.jar:ro golang: <<: *env-file image: golang:1.24 container_name: chatapp3-local-golang restart: unless-stopped depends_on: - auth - other - wallet - mysql - redis working_dir: /workspace/chatapp3-golang command: - sh - -c - go mod download && go run ./cmd/api ports: - "${LIKEI_LOCAL_GOLANG_PORT}:2900" volumes: - ${LIKEI_LOCAL_GOLANG_REPO_DIR:-../../chatapp3/chatapp3-golang}:/workspace/chatapp3-golang - chatapp3-local-go-pkg:/go/pkg/mod - chatapp3-local-go-build:/root/.cache/go-build networks: - localnet volumes: chatapp3-local-go-build: chatapp3-local-go-pkg: chatapp3-local-mysql-data: chatapp3-local-redis-data: chatapp3-local-mongo-data: chatapp3-local-rocketmq-store: networks: localnet: name: chatapp3-localnet