您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

239 行
6.6 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:-23306}: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. environment:
  42. REDIS_PASSWORD: ${REDIS_PASSWORD}
  43. command: ["sh", "-c", "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:-29362}: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:-29362}
  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", "-ec"]
  88. environment:
  89. KAFKA_TOPIC: ${KAFKA_TOPIC:-vehicle-data}
  90. command: |
  91. echo "create kafka topic: $${KAFKA_TOPIC}"
  92. /opt/bitnami/kafka/bin/kafka-topics.sh \
  93. --bootstrap-server kafka:9092 \
  94. --create \
  95. --if-not-exists \
  96. --topic "$${KAFKA_TOPIC}" \
  97. --partitions 3 \
  98. --replication-factor 1
  99. /opt/bitnami/kafka/bin/kafka-topics.sh \
  100. --bootstrap-server kafka:9092 \
  101. --describe \
  102. --topic "$${KAFKA_TOPIC}"
  103. networks:
  104. - emp-net
  105. tdengine:
  106. image: ${TDENGINE_IMAGE:-tdengine/tdengine:3.3.6.0}
  107. hostname: tdengine
  108. privileged: true
  109. restart: unless-stopped
  110. ports:
  111. - "0.0.0.0:${TDENGINE_UI_HOST_PORT:-${TDENGINE_REST_HOST_PORT:-37363}}:6060"
  112. environment:
  113. TZ: Asia/Shanghai
  114. TAOS_FQDN: tdengine
  115. TDENGINE_DATABASE: ${TDENGINE_DATABASE:-emp}
  116. volumes:
  117. - tdengine_data:/var/lib/taos
  118. - tdengine_log:/var/log/taos
  119. healthcheck:
  120. test: ["CMD-SHELL", "taos -s \"create database if not exists $${TDENGINE_DATABASE}; show databases;\" >/dev/null 2>&1"]
  121. interval: 10s
  122. timeout: 5s
  123. retries: 30
  124. networks:
  125. - emp-net
  126. nacos:
  127. image: ${NACOS_IMAGE:-nacos/nacos-server:v2.3.2-slim}
  128. restart: unless-stopped
  129. environment:
  130. MODE: standalone
  131. JVM_XMS: 256m
  132. JVM_XMX: 512m
  133. SPRING_DATASOURCE_PLATFORM: ""
  134. NACOS_AUTH_ENABLE: ${NACOS_AUTH_ENABLE:-true}
  135. NACOS_AUTH_IDENTITY_KEY: ${NACOS_AUTH_IDENTITY_KEY:-emp}
  136. NACOS_AUTH_IDENTITY_VALUE: ${NACOS_AUTH_IDENTITY_VALUE:-emp2026}
  137. NACOS_AUTH_TOKEN: ${NACOS_AUTH_TOKEN}
  138. volumes:
  139. - nacos_data:/home/nacos/data
  140. - nacos_logs:/home/nacos/logs
  141. healthcheck:
  142. test: ["CMD-SHELL", "curl -sf http://127.0.0.1:8848/nacos/actuator/health || exit 1"]
  143. interval: 10s
  144. timeout: 5s
  145. retries: 30
  146. networks:
  147. - emp-net
  148. emp-gateway:
  149. <<: *app-env
  150. image: ${IMAGE_NAMESPACE:-emp-test}/emp-gateway:${IMAGE_TAG:-latest}
  151. depends_on:
  152. <<: *java-depends
  153. emp-auth:
  154. <<: *app-env
  155. image: ${IMAGE_NAMESPACE:-emp-test}/emp-auth:${IMAGE_TAG:-latest}
  156. depends_on:
  157. <<: *java-depends
  158. emp-monitor:
  159. <<: *app-env
  160. image: ${IMAGE_NAMESPACE:-emp-test}/emp-monitor:${IMAGE_TAG:-latest}
  161. depends_on:
  162. <<: *java-depends
  163. tdengine:
  164. condition: service_healthy
  165. emp-pdf:
  166. condition: service_healthy
  167. emp-data:
  168. <<: *app-env
  169. image: ${IMAGE_NAMESPACE:-emp-test}/emp-data:${IMAGE_TAG:-latest}
  170. depends_on:
  171. <<: *java-depends
  172. tdengine:
  173. condition: service_healthy
  174. kafka-init:
  175. condition: service_completed_successfully
  176. emp-ws:
  177. condition: service_started
  178. emp-pdf:
  179. <<: *app-env
  180. image: ${IMAGE_NAMESPACE:-emp-test}/emp-pdf:${IMAGE_TAG:-latest}
  181. environment:
  182. PORT: 3100
  183. healthcheck:
  184. test: ["CMD-SHELL", "node -e \"require('http').get('http://127.0.0.1:3100/pdf', r => { r.resume(); process.exit(r.statusCode < 500 ? 0 : 1) }).on('error', () => process.exit(1))\""]
  185. interval: 10s
  186. timeout: 5s
  187. retries: 30
  188. emp-ws:
  189. <<: *app-env
  190. image: ${IMAGE_NAMESPACE:-emp-test}/emp-ws:${IMAGE_TAG:-latest}
  191. ports:
  192. - "0.0.0.0:${WS_HOST_PORT:-37362}:3000"
  193. depends_on:
  194. mysql:
  195. condition: service_healthy
  196. redis:
  197. condition: service_healthy
  198. kafka-init:
  199. condition: service_completed_successfully
  200. emp-admin:
  201. image: ${IMAGE_NAMESPACE:-emp-test}/emp-admin:${IMAGE_TAG:-latest}
  202. restart: unless-stopped
  203. ports:
  204. - "0.0.0.0:${ADMIN_HOST_PORT:-37361}:80"
  205. depends_on:
  206. emp-gateway:
  207. condition: service_started
  208. emp-ws:
  209. condition: service_started
  210. networks:
  211. - emp-net
  212. networks:
  213. emp-net:
  214. driver: bridge
  215. volumes:
  216. mysql_data:
  217. redis_data:
  218. kafka_data:
  219. tdengine_data:
  220. tdengine_log:
  221. nacos_data:
  222. nacos_logs: