Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 

274 řádky
8.4 KiB

  1. x-app-env: &app-env
  2. env_file:
  3. - .env
  4. restart: unless-stopped
  5. networks:
  6. - emp-net
  7. # Java 服务 logback 文件滚动策略(合并自 ops/runtime-logs/docker-compose.logs.yml)
  8. x-java-file-log: &java-file-log
  9. LOGGING_LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE: ${SPRING_LOG_MAX_FILE_SIZE:-100MB}
  10. LOGGING_LOGBACK_ROLLINGPOLICY_MAX_HISTORY: ${SPRING_LOG_MAX_HISTORY:-30}
  11. LOGGING_LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP: ${SPRING_LOG_TOTAL_SIZE_CAP:-5GB}
  12. x-java-depends: &java-depends
  13. nacos:
  14. condition: service_healthy
  15. mysql:
  16. condition: service_healthy
  17. redis:
  18. condition: service_healthy
  19. services:
  20. mysql:
  21. image: ${MYSQL_IMAGE:-mysql:8.0}
  22. restart: unless-stopped
  23. ports:
  24. - "0.0.0.0:${MYSQL_HOST_PORT:-23306}:3306"
  25. environment:
  26. TZ: Asia/Shanghai
  27. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
  28. MYSQL_DATABASE: ${MYSQL_DATABASE:-emp}
  29. command:
  30. - --character-set-server=utf8mb4
  31. - --collation-server=utf8mb4_0900_ai_ci
  32. - --default-time-zone=+08:00
  33. - --max-connections=1000
  34. volumes:
  35. - mysql_data:/var/lib/mysql
  36. healthcheck:
  37. test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p\"$${MYSQL_ROOT_PASSWORD}\" --silent"]
  38. interval: 10s
  39. timeout: 5s
  40. retries: 30
  41. networks:
  42. - emp-net
  43. redis:
  44. image: ${REDIS_IMAGE:-redis:7-alpine}
  45. restart: unless-stopped
  46. environment:
  47. REDIS_PASSWORD: ${REDIS_PASSWORD}
  48. command: ["sh", "-c", "redis-server --appendonly yes --requirepass \"$${REDIS_PASSWORD}\""]
  49. volumes:
  50. - redis_data:/data
  51. healthcheck:
  52. test: ["CMD-SHELL", "redis-cli -a \"$${REDIS_PASSWORD}\" ping | grep -q PONG"]
  53. interval: 10s
  54. timeout: 5s
  55. retries: 30
  56. networks:
  57. - emp-net
  58. kafka:
  59. image: ${KAFKA_IMAGE:-bitnami/kafka:3.7.0}
  60. profiles:
  61. - local-kafka
  62. restart: unless-stopped
  63. ports:
  64. - "0.0.0.0:${KAFKA_HOST_PORT:-29362}:9094"
  65. environment:
  66. ALLOW_PLAINTEXT_LISTENER: "yes"
  67. KAFKA_CFG_NODE_ID: 1
  68. KAFKA_CFG_PROCESS_ROLES: controller,broker
  69. KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
  70. KAFKA_CFG_LISTENERS: INTERNAL://:9092,CONTROLLER://:9093,EXTERNAL://:9094
  71. KAFKA_CFG_ADVERTISED_LISTENERS: INTERNAL://kafka:9092,EXTERNAL://${PUBLIC_HOST}:${KAFKA_HOST_PORT:-29362}
  72. KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
  73. KAFKA_CFG_INTER_BROKER_LISTENER_NAME: INTERNAL
  74. KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
  75. KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "true"
  76. KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
  77. KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
  78. KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR: 1
  79. volumes:
  80. - kafka_data:/bitnami/kafka
  81. - /data/emp/logs/${IMAGE_NAMESPACE:-emp}/kafka:/opt/bitnami/kafka/logs
  82. healthcheck:
  83. test: ["CMD-SHELL", "/opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list >/dev/null 2>&1"]
  84. interval: 10s
  85. timeout: 5s
  86. retries: 30
  87. networks:
  88. - emp-net
  89. kafka-init:
  90. image: ${KAFKA_IMAGE:-bitnami/kafka:3.7.0}
  91. profiles:
  92. - local-kafka
  93. restart: "no"
  94. depends_on:
  95. kafka:
  96. condition: service_healthy
  97. entrypoint: ["/bin/bash", "-ec"]
  98. environment:
  99. KAFKA_TOPIC: ${KAFKA_TOPIC:-vehicle-data}
  100. command: |
  101. echo "create kafka topic: $${KAFKA_TOPIC}"
  102. /opt/bitnami/kafka/bin/kafka-topics.sh \
  103. --bootstrap-server kafka:9092 \
  104. --create \
  105. --if-not-exists \
  106. --topic "$${KAFKA_TOPIC}" \
  107. --partitions 3 \
  108. --replication-factor 1
  109. /opt/bitnami/kafka/bin/kafka-topics.sh \
  110. --bootstrap-server kafka:9092 \
  111. --describe \
  112. --topic "$${KAFKA_TOPIC}"
  113. networks:
  114. - emp-net
  115. tdengine:
  116. image: ${TDENGINE_IMAGE:-tdengine/tdengine:3.3.6.0}
  117. hostname: tdengine
  118. privileged: true
  119. restart: unless-stopped
  120. ports:
  121. - "0.0.0.0:${TDENGINE_UI_HOST_PORT:-${TDENGINE_REST_HOST_PORT:-37363}}:6060"
  122. environment:
  123. TZ: Asia/Shanghai
  124. TAOS_FQDN: tdengine
  125. TDENGINE_DATABASE: ${TDENGINE_DATABASE:-emp}
  126. volumes:
  127. - tdengine_data:/var/lib/taos
  128. - /data/emp/logs/${IMAGE_NAMESPACE:-emp}/tdengine:/var/log/taos
  129. healthcheck:
  130. test: ["CMD-SHELL", "taos -s \"create database if not exists $${TDENGINE_DATABASE}; show databases;\" >/dev/null 2>&1"]
  131. interval: 10s
  132. timeout: 5s
  133. retries: 30
  134. networks:
  135. - emp-net
  136. nacos:
  137. image: ${NACOS_IMAGE:-nacos/nacos-server:v2.3.2-slim}
  138. restart: unless-stopped
  139. environment:
  140. MODE: standalone
  141. SPRING_DATASOURCE_PLATFORM: ""
  142. NACOS_AUTH_ENABLE: ${NACOS_AUTH_ENABLE:-true}
  143. NACOS_AUTH_IDENTITY_KEY: ${NACOS_AUTH_IDENTITY_KEY:-emp}
  144. NACOS_AUTH_IDENTITY_VALUE: ${NACOS_AUTH_IDENTITY_VALUE:-emp2026}
  145. NACOS_AUTH_TOKEN: ${NACOS_AUTH_TOKEN}
  146. volumes:
  147. - nacos_data:/home/nacos/data
  148. - /data/emp/logs/${IMAGE_NAMESPACE:-emp}/nacos:/home/nacos/logs
  149. healthcheck:
  150. test: ["CMD-SHELL", "curl -sf http://127.0.0.1:8848/nacos/actuator/health || exit 1"]
  151. interval: 10s
  152. timeout: 5s
  153. retries: 30
  154. networks:
  155. - emp-net
  156. emp-gateway:
  157. <<: *app-env
  158. image: ${IMAGE_NAMESPACE:-emp-test}/emp-gateway:${IMAGE_TAG:-latest}
  159. volumes:
  160. - /data/emp/logs/${IMAGE_NAMESPACE:-emp}/emp-gateway:/logs
  161. environment:
  162. <<: *java-file-log
  163. LOGGING_FILE_NAME: /logs/emp-gateway.log
  164. LOGGING_LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN: /logs/emp-gateway-%d{yyyy-MM-dd}.%i.log
  165. depends_on:
  166. <<: *java-depends
  167. emp-auth:
  168. <<: *app-env
  169. image: ${IMAGE_NAMESPACE:-emp-test}/emp-auth:${IMAGE_TAG:-latest}
  170. volumes:
  171. - /data/emp/logs/${IMAGE_NAMESPACE:-emp}/emp-auth:/logs
  172. environment:
  173. <<: *java-file-log
  174. LOGGING_FILE_NAME: /logs/emp-auth.log
  175. LOGGING_LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN: /logs/emp-auth-%d{yyyy-MM-dd}.%i.log
  176. depends_on:
  177. <<: *java-depends
  178. emp-monitor:
  179. <<: *app-env
  180. image: ${IMAGE_NAMESPACE:-emp-test}/emp-monitor:${IMAGE_TAG:-latest}
  181. volumes:
  182. - /data/emp/logs/${IMAGE_NAMESPACE:-emp}/emp-monitor:/logs
  183. environment:
  184. <<: *java-file-log
  185. LOGGING_FILE_NAME: /logs/emp-monitor.log
  186. LOGGING_LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN: /logs/emp-monitor-%d{yyyy-MM-dd}.%i.log
  187. depends_on:
  188. <<: *java-depends
  189. tdengine:
  190. condition: service_healthy
  191. emp-pdf:
  192. condition: service_healthy
  193. emp-data:
  194. <<: *app-env
  195. image: ${IMAGE_NAMESPACE:-emp-test}/emp-data:${IMAGE_TAG:-latest}
  196. volumes:
  197. - /data/emp/logs/${IMAGE_NAMESPACE:-emp}/emp-data:/logs
  198. environment:
  199. <<: *java-file-log
  200. LOGGING_FILE_NAME: /logs/emp-data.log
  201. LOGGING_LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN: /logs/emp-data-%d{yyyy-MM-dd}.%i.log
  202. depends_on:
  203. <<: *java-depends
  204. tdengine:
  205. condition: service_healthy
  206. emp-ws:
  207. condition: service_started
  208. emp-pdf:
  209. <<: *app-env
  210. image: ${IMAGE_NAMESPACE:-emp-test}/emp-pdf:${IMAGE_TAG:-latest}
  211. environment:
  212. PORT: 3100
  213. volumes:
  214. - /data/emp/logs/${IMAGE_NAMESPACE:-emp}/emp-pdf:/logs
  215. command: ["/bin/sh", "-c", "exec node server.js >> /logs/emp-pdf.log 2>&1"]
  216. healthcheck:
  217. 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))\""]
  218. interval: 10s
  219. timeout: 5s
  220. retries: 30
  221. emp-ws:
  222. <<: *app-env
  223. image: ${IMAGE_NAMESPACE:-emp-test}/emp-ws:${IMAGE_TAG:-latest}
  224. ports:
  225. - "0.0.0.0:${WS_HOST_PORT:-37362}:3000"
  226. volumes:
  227. - /data/emp/logs/${IMAGE_NAMESPACE:-emp}/emp-ws:/logs
  228. command: ["/bin/sh", "-c", "exec node server.js >> /logs/emp-ws.log 2>&1"]
  229. depends_on:
  230. mysql:
  231. condition: service_healthy
  232. redis:
  233. condition: service_healthy
  234. emp-admin:
  235. image: ${IMAGE_NAMESPACE:-emp-test}/emp-admin:${IMAGE_TAG:-latest}
  236. restart: unless-stopped
  237. ports:
  238. - "0.0.0.0:${ADMIN_HOST_PORT:-37361}:80"
  239. volumes:
  240. - /data/emp/logs/${IMAGE_NAMESPACE:-emp}/emp-admin:/var/log/nginx
  241. depends_on:
  242. emp-gateway:
  243. condition: service_started
  244. emp-ws:
  245. condition: service_started
  246. networks:
  247. - emp-net
  248. networks:
  249. emp-net:
  250. driver: bridge
  251. volumes:
  252. mysql_data:
  253. redis_data:
  254. kafka_data:
  255. tdengine_data:
  256. nacos_data: