Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

237 linhas
6.5 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. profiles:
  56. - local-kafka
  57. restart: unless-stopped
  58. ports:
  59. - "0.0.0.0:${KAFKA_HOST_PORT:-29362}:9094"
  60. environment:
  61. ALLOW_PLAINTEXT_LISTENER: "yes"
  62. KAFKA_CFG_NODE_ID: 1
  63. KAFKA_CFG_PROCESS_ROLES: controller,broker
  64. KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
  65. KAFKA_CFG_LISTENERS: INTERNAL://:9092,CONTROLLER://:9093,EXTERNAL://:9094
  66. KAFKA_CFG_ADVERTISED_LISTENERS: INTERNAL://kafka:9092,EXTERNAL://${PUBLIC_HOST}:${KAFKA_HOST_PORT:-29362}
  67. KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
  68. KAFKA_CFG_INTER_BROKER_LISTENER_NAME: INTERNAL
  69. KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
  70. KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "true"
  71. KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
  72. KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
  73. KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR: 1
  74. volumes:
  75. - kafka_data:/bitnami/kafka
  76. healthcheck:
  77. test: ["CMD-SHELL", "/opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list >/dev/null 2>&1"]
  78. interval: 10s
  79. timeout: 5s
  80. retries: 30
  81. networks:
  82. - emp-net
  83. kafka-init:
  84. image: ${KAFKA_IMAGE:-bitnami/kafka:3.7.0}
  85. profiles:
  86. - local-kafka
  87. restart: "no"
  88. depends_on:
  89. kafka:
  90. condition: service_healthy
  91. entrypoint: ["/bin/bash", "-ec"]
  92. environment:
  93. KAFKA_TOPIC: ${KAFKA_TOPIC:-vehicle-data}
  94. command: |
  95. echo "create kafka topic: $${KAFKA_TOPIC}"
  96. /opt/bitnami/kafka/bin/kafka-topics.sh \
  97. --bootstrap-server kafka:9092 \
  98. --create \
  99. --if-not-exists \
  100. --topic "$${KAFKA_TOPIC}" \
  101. --partitions 3 \
  102. --replication-factor 1
  103. /opt/bitnami/kafka/bin/kafka-topics.sh \
  104. --bootstrap-server kafka:9092 \
  105. --describe \
  106. --topic "$${KAFKA_TOPIC}"
  107. networks:
  108. - emp-net
  109. tdengine:
  110. image: ${TDENGINE_IMAGE:-tdengine/tdengine:3.3.6.0}
  111. hostname: tdengine
  112. privileged: true
  113. restart: unless-stopped
  114. ports:
  115. - "0.0.0.0:${TDENGINE_UI_HOST_PORT:-${TDENGINE_REST_HOST_PORT:-37363}}:6060"
  116. environment:
  117. TZ: Asia/Shanghai
  118. TAOS_FQDN: tdengine
  119. TDENGINE_DATABASE: ${TDENGINE_DATABASE:-emp}
  120. volumes:
  121. - tdengine_data:/var/lib/taos
  122. - tdengine_log:/var/log/taos
  123. healthcheck:
  124. test: ["CMD-SHELL", "taos -s \"create database if not exists $${TDENGINE_DATABASE}; show databases;\" >/dev/null 2>&1"]
  125. interval: 10s
  126. timeout: 5s
  127. retries: 30
  128. networks:
  129. - emp-net
  130. nacos:
  131. image: ${NACOS_IMAGE:-nacos/nacos-server:v2.3.2-slim}
  132. restart: unless-stopped
  133. environment:
  134. MODE: standalone
  135. SPRING_DATASOURCE_PLATFORM: ""
  136. NACOS_AUTH_ENABLE: ${NACOS_AUTH_ENABLE:-true}
  137. NACOS_AUTH_IDENTITY_KEY: ${NACOS_AUTH_IDENTITY_KEY:-emp}
  138. NACOS_AUTH_IDENTITY_VALUE: ${NACOS_AUTH_IDENTITY_VALUE:-emp2026}
  139. NACOS_AUTH_TOKEN: ${NACOS_AUTH_TOKEN}
  140. volumes:
  141. - nacos_data:/home/nacos/data
  142. - nacos_logs:/home/nacos/logs
  143. healthcheck:
  144. test: ["CMD-SHELL", "curl -sf http://127.0.0.1:8848/nacos/actuator/health || exit 1"]
  145. interval: 10s
  146. timeout: 5s
  147. retries: 30
  148. networks:
  149. - emp-net
  150. emp-gateway:
  151. <<: *app-env
  152. image: ${IMAGE_NAMESPACE:-emp-test}/emp-gateway:${IMAGE_TAG:-latest}
  153. depends_on:
  154. <<: *java-depends
  155. emp-auth:
  156. <<: *app-env
  157. image: ${IMAGE_NAMESPACE:-emp-test}/emp-auth:${IMAGE_TAG:-latest}
  158. depends_on:
  159. <<: *java-depends
  160. emp-monitor:
  161. <<: *app-env
  162. image: ${IMAGE_NAMESPACE:-emp-test}/emp-monitor:${IMAGE_TAG:-latest}
  163. depends_on:
  164. <<: *java-depends
  165. tdengine:
  166. condition: service_healthy
  167. emp-pdf:
  168. condition: service_healthy
  169. emp-data:
  170. <<: *app-env
  171. image: ${IMAGE_NAMESPACE:-emp-test}/emp-data:${IMAGE_TAG:-latest}
  172. depends_on:
  173. <<: *java-depends
  174. tdengine:
  175. condition: service_healthy
  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. emp-admin:
  199. image: ${IMAGE_NAMESPACE:-emp-test}/emp-admin:${IMAGE_TAG:-latest}
  200. restart: unless-stopped
  201. ports:
  202. - "0.0.0.0:${ADMIN_HOST_PORT:-37361}:80"
  203. depends_on:
  204. emp-gateway:
  205. condition: service_started
  206. emp-ws:
  207. condition: service_started
  208. networks:
  209. - emp-net
  210. networks:
  211. emp-net:
  212. driver: bridge
  213. volumes:
  214. mysql_data:
  215. redis_data:
  216. kafka_data:
  217. tdengine_data:
  218. tdengine_log:
  219. nacos_data:
  220. nacos_logs: