|
- x-app-env: &app-env
- env_file:
- - .env
- restart: unless-stopped
- networks:
- - emp-net
-
- x-java-depends: &java-depends
- nacos:
- condition: service_healthy
- mysql:
- condition: service_healthy
- redis:
- condition: service_healthy
-
- services:
- mysql:
- image: ${MYSQL_IMAGE:-mysql:8.0}
- restart: unless-stopped
- ports:
- - "0.0.0.0:${MYSQL_HOST_PORT:-13306}:3306"
- environment:
- TZ: Asia/Shanghai
- MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE: ${MYSQL_DATABASE:-emp}
- command:
- - --character-set-server=utf8mb4
- - --collation-server=utf8mb4_0900_ai_ci
- - --default-time-zone=+08:00
- - --max-connections=1000
- volumes:
- - mysql_data:/var/lib/mysql
- healthcheck:
- test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p\"$${MYSQL_ROOT_PASSWORD}\" --silent"]
- interval: 10s
- timeout: 5s
- retries: 30
- networks:
- - emp-net
-
- redis:
- image: ${REDIS_IMAGE:-redis:7-alpine}
- restart: unless-stopped
- ports:
- - "${REDIS_BIND_HOST:-127.0.0.1}:${REDIS_HOST_PORT:-16379}:6379"
- command: ["redis-server", "--appendonly", "yes", "--requirepass", "${REDIS_PASSWORD}"]
- volumes:
- - redis_data:/data
- healthcheck:
- test: ["CMD-SHELL", "redis-cli -a \"$${REDIS_PASSWORD}\" ping | grep -q PONG"]
- interval: 10s
- timeout: 5s
- retries: 30
- networks:
- - emp-net
-
- kafka:
- image: ${KAFKA_IMAGE:-bitnami/kafka:3.7.0}
- restart: unless-stopped
- ports:
- - "0.0.0.0:${KAFKA_HOST_PORT:-19094}:9094"
- environment:
- ALLOW_PLAINTEXT_LISTENER: "yes"
- KAFKA_CFG_NODE_ID: 1
- KAFKA_CFG_PROCESS_ROLES: controller,broker
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
- KAFKA_CFG_LISTENERS: INTERNAL://:9092,CONTROLLER://:9093,EXTERNAL://:9094
- KAFKA_CFG_ADVERTISED_LISTENERS: INTERNAL://kafka:9092,EXTERNAL://${PUBLIC_HOST}:${KAFKA_HOST_PORT:-19094}
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME: INTERNAL
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "true"
- KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
- KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
- KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR: 1
- volumes:
- - kafka_data:/bitnami/kafka
- healthcheck:
- test: ["CMD-SHELL", "/opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list >/dev/null 2>&1"]
- interval: 10s
- timeout: 5s
- retries: 30
- networks:
- - emp-net
-
- kafka-init:
- image: ${KAFKA_IMAGE:-bitnami/kafka:3.7.0}
- restart: "no"
- depends_on:
- kafka:
- condition: service_healthy
- entrypoint: ["/bin/bash", "-lc"]
- command: >
- /opt/bitnami/kafka/bin/kafka-topics.sh
- --bootstrap-server kafka:9092
- --create
- --if-not-exists
- --topic ${KAFKA_TOPIC:-vehicle-data}
- --partitions 3
- --replication-factor 1
- networks:
- - emp-net
-
- tdengine:
- image: ${TDENGINE_IMAGE:-tdengine/tdengine:3.3.6.0}
- hostname: tdengine
- privileged: true
- restart: unless-stopped
- ports:
- - "0.0.0.0:${TDENGINE_HOST_PORT:-6030}:6030"
- - "0.0.0.0:${TDENGINE_REST_HOST_PORT:-6041}:6041"
- - "0.0.0.0:${TDENGINE_RPC_HOST_PORT:-6043}:6043"
- - "0.0.0.0:${TDENGINE_RPC_UDP_HOST_PORT:-6044}:6044/udp"
- - "0.0.0.0:${TDENGINE_KEEPER_HOST_PORT:-6060}:6060"
- environment:
- TZ: Asia/Shanghai
- TAOS_FQDN: ${PUBLIC_HOST}
- volumes:
- - tdengine_data:/var/lib/taos
- - tdengine_log:/var/log/taos
- healthcheck:
- test: ["CMD-SHELL", "taos -s 'show databases;' >/dev/null 2>&1"]
- interval: 10s
- timeout: 5s
- retries: 30
- networks:
- - emp-net
-
- tdengine-init:
- image: ${TDENGINE_IMAGE:-tdengine/tdengine:3.3.6.0}
- restart: "no"
- depends_on:
- tdengine:
- condition: service_healthy
- entrypoint: ["/bin/sh", "-lc"]
- command: >
- taos -h tdengine -u ${TDENGINE_USER:-root} -p"${TDENGINE_PWD:-taosdata}"
- -s "create database if not exists ${TDENGINE_DATABASE:-emp};"
- networks:
- - emp-net
-
- nacos:
- image: ${NACOS_IMAGE:-nacos/nacos-server:v2.3.2-slim}
- restart: unless-stopped
- ports:
- - "0.0.0.0:${NACOS_HOST_PORT:-9008}:8848"
- - "0.0.0.0:${NACOS_GRPC_HOST_PORT:-10008}:9848"
- environment:
- MODE: standalone
- JVM_XMS: 256m
- JVM_XMX: 512m
- SPRING_DATASOURCE_PLATFORM: ""
- NACOS_AUTH_ENABLE: ${NACOS_AUTH_ENABLE:-true}
- NACOS_AUTH_IDENTITY_KEY: ${NACOS_AUTH_IDENTITY_KEY:-emp}
- NACOS_AUTH_IDENTITY_VALUE: ${NACOS_AUTH_IDENTITY_VALUE:-emp2026}
- NACOS_AUTH_TOKEN: ${NACOS_AUTH_TOKEN}
- volumes:
- - nacos_data:/home/nacos/data
- - nacos_logs:/home/nacos/logs
- healthcheck:
- test: ["CMD-SHELL", "curl -sf http://127.0.0.1:8848/nacos/actuator/health || exit 1"]
- interval: 10s
- timeout: 5s
- retries: 30
- networks:
- - emp-net
-
- emp-gateway:
- <<: *app-env
- image: ${IMAGE_NAMESPACE:-emp-test}/emp-gateway:${IMAGE_TAG:-latest}
- ports:
- - "0.0.0.0:${GATEWAY_HOST_PORT:-9000}:9000"
- depends_on:
- <<: *java-depends
-
- emp-auth:
- <<: *app-env
- image: ${IMAGE_NAMESPACE:-emp-test}/emp-auth:${IMAGE_TAG:-latest}
- depends_on:
- <<: *java-depends
-
- emp-monitor:
- <<: *app-env
- image: ${IMAGE_NAMESPACE:-emp-test}/emp-monitor:${IMAGE_TAG:-latest}
- depends_on:
- <<: *java-depends
- tdengine:
- condition: service_healthy
- emp-pdf:
- condition: service_started
-
- emp-data:
- <<: *app-env
- image: ${IMAGE_NAMESPACE:-emp-test}/emp-data:${IMAGE_TAG:-latest}
- depends_on:
- <<: *java-depends
- tdengine:
- condition: service_healthy
- kafka-init:
- condition: service_completed_successfully
- emp-ws:
- condition: service_started
-
- emp-pdf:
- <<: *app-env
- image: ${IMAGE_NAMESPACE:-emp-test}/emp-pdf:${IMAGE_TAG:-latest}
- ports:
- - "127.0.0.1:${PDF_HOST_PORT:-3100}:3100"
-
- emp-ws:
- <<: *app-env
- image: ${IMAGE_NAMESPACE:-emp-test}/emp-ws:${IMAGE_TAG:-latest}
- ports:
- - "0.0.0.0:${WS_HOST_PORT:-3000}:3000"
- depends_on:
- mysql:
- condition: service_healthy
- redis:
- condition: service_healthy
- kafka-init:
- condition: service_completed_successfully
-
- emp-admin:
- image: ${IMAGE_NAMESPACE:-emp-test}/emp-admin:${IMAGE_TAG:-latest}
- restart: unless-stopped
- ports:
- - "0.0.0.0:${ADMIN_HOST_PORT:-4081}:80"
- depends_on:
- emp-gateway:
- condition: service_started
- emp-ws:
- condition: service_started
- networks:
- - emp-net
-
- networks:
- emp-net:
- driver: bridge
-
- volumes:
- mysql_data:
- redis_data:
- kafka_data:
- tdengine_data:
- tdengine_log:
- nacos_data:
- nacos_logs:
|