25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

253 lines
7.0 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_UI_HOST_PORT:-${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. SPRING_DATASOURCE_PLATFORM: ""
  143. NACOS_AUTH_ENABLE: ${NACOS_AUTH_ENABLE:-true}
  144. NACOS_AUTH_IDENTITY_KEY: ${NACOS_AUTH_IDENTITY_KEY:-emp}
  145. NACOS_AUTH_IDENTITY_VALUE: ${NACOS_AUTH_IDENTITY_VALUE:-emp2026}
  146. NACOS_AUTH_TOKEN: ${NACOS_AUTH_TOKEN}
  147. volumes:
  148. - nacos_data:/home/nacos/data
  149. - nacos_logs:/home/nacos/logs
  150. healthcheck:
  151. test: ["CMD-SHELL", "curl -sf http://127.0.0.1:8848/nacos/actuator/health || exit 1"]
  152. interval: 10s
  153. timeout: 5s
  154. retries: 30
  155. networks:
  156. - emp-net
  157. emp-gateway:
  158. <<: *app-env
  159. image: ${IMAGE_NAMESPACE:-emp-test}/emp-gateway:${IMAGE_TAG:-latest}
  160. ports:
  161. - "0.0.0.0:${GATEWAY_HOST_PORT:-9000}:9000"
  162. depends_on:
  163. <<: *java-depends
  164. emp-auth:
  165. <<: *app-env
  166. image: ${IMAGE_NAMESPACE:-emp-test}/emp-auth:${IMAGE_TAG:-latest}
  167. depends_on:
  168. <<: *java-depends
  169. emp-monitor:
  170. <<: *app-env
  171. image: ${IMAGE_NAMESPACE:-emp-test}/emp-monitor:${IMAGE_TAG:-latest}
  172. depends_on:
  173. <<: *java-depends
  174. tdengine:
  175. condition: service_healthy
  176. emp-pdf:
  177. condition: service_healthy
  178. emp-data:
  179. <<: *app-env
  180. image: ${IMAGE_NAMESPACE:-emp-test}/emp-data:${IMAGE_TAG:-latest}
  181. depends_on:
  182. <<: *java-depends
  183. tdengine:
  184. condition: service_healthy
  185. kafka-init:
  186. condition: service_completed_successfully
  187. emp-ws:
  188. condition: service_started
  189. emp-pdf:
  190. <<: *app-env
  191. image: ${IMAGE_NAMESPACE:-emp-test}/emp-pdf:${IMAGE_TAG:-latest}
  192. environment:
  193. PORT: 3100
  194. ports:
  195. - "127.0.0.1:${PDF_HOST_PORT:-3100}:3100"
  196. healthcheck:
  197. 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))\""]
  198. interval: 10s
  199. timeout: 5s
  200. retries: 30
  201. emp-ws:
  202. <<: *app-env
  203. image: ${IMAGE_NAMESPACE:-emp-test}/emp-ws:${IMAGE_TAG:-latest}
  204. ports:
  205. - "0.0.0.0:${WS_HOST_PORT:-3000}:3000"
  206. depends_on:
  207. mysql:
  208. condition: service_healthy
  209. redis:
  210. condition: service_healthy
  211. kafka-init:
  212. condition: service_completed_successfully
  213. emp-admin:
  214. image: ${IMAGE_NAMESPACE:-emp-test}/emp-admin:${IMAGE_TAG:-latest}
  215. restart: unless-stopped
  216. ports:
  217. - "0.0.0.0:${ADMIN_HOST_PORT:-4081}:80"
  218. depends_on:
  219. emp-gateway:
  220. condition: service_started
  221. emp-ws:
  222. condition: service_started
  223. networks:
  224. - emp-net
  225. networks:
  226. emp-net:
  227. driver: bridge
  228. volumes:
  229. mysql_data:
  230. redis_data:
  231. kafka_data:
  232. tdengine_data:
  233. tdengine_log:
  234. nacos_data:
  235. nacos_logs: