You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

248 lines
6.8 KiB

  1. x-app-env: &app-env
  2. env_file:
  3. - .env
  4. restart: unless-stopped
  5. networks:
  6. - emp-net
  7. x-java-depends: &java-depends
  8. nacos:
  9. condition: service_healthy
  10. mysql:
  11. condition: service_healthy
  12. redis:
  13. condition: service_healthy
  14. services:
  15. mysql:
  16. image: ${MYSQL_IMAGE:-mysql:8.0}
  17. restart: unless-stopped
  18. ports:
  19. - "0.0.0.0:${MYSQL_HOST_PORT:-13306}:3306"
  20. environment:
  21. TZ: Asia/Shanghai
  22. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
  23. MYSQL_DATABASE: ${MYSQL_DATABASE:-emp}
  24. command:
  25. - --character-set-server=utf8mb4
  26. - --collation-server=utf8mb4_0900_ai_ci
  27. - --default-time-zone=+08:00
  28. - --max-connections=1000
  29. volumes:
  30. - mysql_data:/var/lib/mysql
  31. healthcheck:
  32. test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p\"$${MYSQL_ROOT_PASSWORD}\" --silent"]
  33. interval: 10s
  34. timeout: 5s
  35. retries: 30
  36. networks:
  37. - emp-net
  38. redis:
  39. image: ${REDIS_IMAGE:-redis:7-alpine}
  40. restart: unless-stopped
  41. ports:
  42. - "${REDIS_BIND_HOST:-127.0.0.1}:${REDIS_HOST_PORT:-16379}:6379"
  43. command: ["redis-server", "--appendonly", "yes", "--requirepass", "${REDIS_PASSWORD}"]
  44. volumes:
  45. - redis_data:/data
  46. healthcheck:
  47. test: ["CMD-SHELL", "redis-cli -a \"$${REDIS_PASSWORD}\" ping | grep -q PONG"]
  48. interval: 10s
  49. timeout: 5s
  50. retries: 30
  51. networks:
  52. - emp-net
  53. kafka:
  54. image: ${KAFKA_IMAGE:-bitnami/kafka:3.7.0}
  55. restart: unless-stopped
  56. ports:
  57. - "0.0.0.0:${KAFKA_HOST_PORT:-19094}:9094"
  58. environment:
  59. ALLOW_PLAINTEXT_LISTENER: "yes"
  60. KAFKA_CFG_NODE_ID: 1
  61. KAFKA_CFG_PROCESS_ROLES: controller,broker
  62. KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
  63. KAFKA_CFG_LISTENERS: INTERNAL://:9092,CONTROLLER://:9093,EXTERNAL://:9094
  64. KAFKA_CFG_ADVERTISED_LISTENERS: INTERNAL://kafka:9092,EXTERNAL://${PUBLIC_HOST}:${KAFKA_HOST_PORT:-19094}
  65. KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
  66. KAFKA_CFG_INTER_BROKER_LISTENER_NAME: INTERNAL
  67. KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
  68. KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "true"
  69. KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
  70. KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
  71. KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR: 1
  72. volumes:
  73. - kafka_data:/bitnami/kafka
  74. healthcheck:
  75. test: ["CMD-SHELL", "/opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list >/dev/null 2>&1"]
  76. interval: 10s
  77. timeout: 5s
  78. retries: 30
  79. networks:
  80. - emp-net
  81. kafka-init:
  82. image: ${KAFKA_IMAGE:-bitnami/kafka:3.7.0}
  83. restart: "no"
  84. depends_on:
  85. kafka:
  86. condition: service_healthy
  87. entrypoint: ["/bin/bash", "-lc"]
  88. command: >
  89. /opt/bitnami/kafka/bin/kafka-topics.sh
  90. --bootstrap-server kafka:9092
  91. --create
  92. --if-not-exists
  93. --topic ${KAFKA_TOPIC:-vehicle-data}
  94. --partitions 3
  95. --replication-factor 1
  96. networks:
  97. - emp-net
  98. tdengine:
  99. image: ${TDENGINE_IMAGE:-tdengine/tdengine:3.3.6.0}
  100. hostname: tdengine
  101. privileged: true
  102. restart: unless-stopped
  103. ports:
  104. - "0.0.0.0:${TDENGINE_HOST_PORT:-6030}:6030"
  105. - "0.0.0.0:${TDENGINE_REST_HOST_PORT:-6041}:6041"
  106. - "0.0.0.0:${TDENGINE_RPC_HOST_PORT:-6043}:6043"
  107. - "0.0.0.0:${TDENGINE_RPC_UDP_HOST_PORT:-6044}:6044/udp"
  108. - "0.0.0.0:${TDENGINE_KEEPER_HOST_PORT:-6060}:6060"
  109. environment:
  110. TZ: Asia/Shanghai
  111. TAOS_FQDN: ${PUBLIC_HOST}
  112. volumes:
  113. - tdengine_data:/var/lib/taos
  114. - tdengine_log:/var/log/taos
  115. healthcheck:
  116. test: ["CMD-SHELL", "taos -s 'show databases;' >/dev/null 2>&1"]
  117. interval: 10s
  118. timeout: 5s
  119. retries: 30
  120. networks:
  121. - emp-net
  122. tdengine-init:
  123. image: ${TDENGINE_IMAGE:-tdengine/tdengine:3.3.6.0}
  124. restart: "no"
  125. depends_on:
  126. tdengine:
  127. condition: service_healthy
  128. entrypoint: ["/bin/sh", "-lc"]
  129. command: >
  130. taos -h tdengine -u ${TDENGINE_USER:-root} -p"${TDENGINE_PWD:-taosdata}"
  131. -s "create database if not exists ${TDENGINE_DATABASE:-emp};"
  132. networks:
  133. - emp-net
  134. nacos:
  135. image: ${NACOS_IMAGE:-nacos/nacos-server:v2.3.2-slim}
  136. restart: unless-stopped
  137. ports:
  138. - "0.0.0.0:${NACOS_HOST_PORT:-9008}:8848"
  139. - "0.0.0.0:${NACOS_GRPC_HOST_PORT:-10008}:9848"
  140. environment:
  141. MODE: standalone
  142. JVM_XMS: 256m
  143. JVM_XMX: 512m
  144. SPRING_DATASOURCE_PLATFORM: ""
  145. NACOS_AUTH_ENABLE: ${NACOS_AUTH_ENABLE:-true}
  146. NACOS_AUTH_IDENTITY_KEY: ${NACOS_AUTH_IDENTITY_KEY:-emp}
  147. NACOS_AUTH_IDENTITY_VALUE: ${NACOS_AUTH_IDENTITY_VALUE:-emp2026}
  148. NACOS_AUTH_TOKEN: ${NACOS_AUTH_TOKEN}
  149. volumes:
  150. - nacos_data:/home/nacos/data
  151. - nacos_logs:/home/nacos/logs
  152. healthcheck:
  153. test: ["CMD-SHELL", "curl -sf http://127.0.0.1:8848/nacos/actuator/health || exit 1"]
  154. interval: 10s
  155. timeout: 5s
  156. retries: 30
  157. networks:
  158. - emp-net
  159. emp-gateway:
  160. <<: *app-env
  161. image: ${IMAGE_NAMESPACE:-emp-test}/emp-gateway:${IMAGE_TAG:-latest}
  162. ports:
  163. - "0.0.0.0:${GATEWAY_HOST_PORT:-9000}:9000"
  164. depends_on:
  165. <<: *java-depends
  166. emp-auth:
  167. <<: *app-env
  168. image: ${IMAGE_NAMESPACE:-emp-test}/emp-auth:${IMAGE_TAG:-latest}
  169. depends_on:
  170. <<: *java-depends
  171. emp-monitor:
  172. <<: *app-env
  173. image: ${IMAGE_NAMESPACE:-emp-test}/emp-monitor:${IMAGE_TAG:-latest}
  174. depends_on:
  175. <<: *java-depends
  176. tdengine:
  177. condition: service_healthy
  178. emp-pdf:
  179. condition: service_started
  180. emp-data:
  181. <<: *app-env
  182. image: ${IMAGE_NAMESPACE:-emp-test}/emp-data:${IMAGE_TAG:-latest}
  183. depends_on:
  184. <<: *java-depends
  185. tdengine:
  186. condition: service_healthy
  187. kafka-init:
  188. condition: service_completed_successfully
  189. emp-ws:
  190. condition: service_started
  191. emp-pdf:
  192. <<: *app-env
  193. image: ${IMAGE_NAMESPACE:-emp-test}/emp-pdf:${IMAGE_TAG:-latest}
  194. ports:
  195. - "127.0.0.1:${PDF_HOST_PORT:-3100}:3100"
  196. emp-ws:
  197. <<: *app-env
  198. image: ${IMAGE_NAMESPACE:-emp-test}/emp-ws:${IMAGE_TAG:-latest}
  199. ports:
  200. - "0.0.0.0:${WS_HOST_PORT:-3000}:3000"
  201. depends_on:
  202. mysql:
  203. condition: service_healthy
  204. redis:
  205. condition: service_healthy
  206. kafka-init:
  207. condition: service_completed_successfully
  208. emp-admin:
  209. image: ${IMAGE_NAMESPACE:-emp-test}/emp-admin:${IMAGE_TAG:-latest}
  210. restart: unless-stopped
  211. ports:
  212. - "0.0.0.0:${ADMIN_HOST_PORT:-4081}:80"
  213. depends_on:
  214. emp-gateway:
  215. condition: service_started
  216. emp-ws:
  217. condition: service_started
  218. networks:
  219. - emp-net
  220. networks:
  221. emp-net:
  222. driver: bridge
  223. volumes:
  224. mysql_data:
  225. redis_data:
  226. kafka_data:
  227. tdengine_data:
  228. tdengine_log:
  229. nacos_data:
  230. nacos_logs: