智慧水务管理系统 - 精河县供水工程综合管理平台

docker-compose.override.yml 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  1. # ============================================================
  2. # 生产环境 Docker Compose 覆盖配置
  3. # 使用方式: docker compose -f docker-compose.yml -f deploy/production/docker-compose.override.yml up -d
  4. # ============================================================
  5. services:
  6. # ==================== 基础设施 ====================
  7. postgres:
  8. restart: always
  9. environment:
  10. POSTGRES_DB: ${POSTGRES_DB}
  11. POSTGRES_USER: ${POSTGRES_USER}
  12. POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
  13. ports:
  14. - "127.0.0.1:5432:5432"
  15. volumes:
  16. - pgdata:/var/lib/postgresql/data
  17. - /opt/water-management/config/postgres:/etc/postgresql:ro
  18. deploy:
  19. resources:
  20. limits:
  21. cpus: '2.0'
  22. memory: 2G
  23. reservations:
  24. cpus: '0.5'
  25. memory: 512M
  26. logging:
  27. driver: json-file
  28. options:
  29. max-size: "50m"
  30. max-file: "5"
  31. security_opt:
  32. - no-new-privileges:true
  33. healthcheck:
  34. test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
  35. interval: 30s
  36. timeout: 10s
  37. retries: 5
  38. start_period: 60s
  39. redis:
  40. restart: always
  41. command: >
  42. redis-server
  43. --requirepass ${REDIS_PASSWORD}
  44. --maxmemory 512mb
  45. --maxmemory-policy allkeys-lru
  46. --appendonly yes
  47. --appendfsync everysec
  48. ports:
  49. - "127.0.0.1:6379:6379"
  50. deploy:
  51. resources:
  52. limits:
  53. cpus: '0.5'
  54. memory: 768M
  55. reservations:
  56. cpus: '0.25'
  57. memory: 256M
  58. logging:
  59. driver: json-file
  60. options:
  61. max-size: "20m"
  62. max-file: "3"
  63. security_opt:
  64. - no-new-privileges:true
  65. read_only: true
  66. tmpfs:
  67. - /tmp
  68. - /run
  69. tdengine:
  70. restart: always
  71. ports:
  72. - "127.0.0.1:6030:6030"
  73. - "127.0.0.1:6041:6041"
  74. deploy:
  75. resources:
  76. limits:
  77. cpus: '1.0'
  78. memory: 2G
  79. reservations:
  80. cpus: '0.5'
  81. memory: 512M
  82. logging:
  83. driver: json-file
  84. options:
  85. max-size: "50m"
  86. max-file: "5"
  87. kafka:
  88. restart: always
  89. ports:
  90. - "127.0.0.1:9092:9092"
  91. deploy:
  92. resources:
  93. limits:
  94. cpus: '1.0'
  95. memory: 2G
  96. reservations:
  97. cpus: '0.5'
  98. memory: 512M
  99. logging:
  100. driver: json-file
  101. options:
  102. max-size: "50m"
  103. max-file: "5"
  104. emqx:
  105. restart: always
  106. ports:
  107. - "1883:1883"
  108. - "127.0.0.1:8083:8083"
  109. - "127.0.0.1:18083:18083"
  110. environment:
  111. EMQX_DASHBOARD__DEFAULT_USERNAME: ${EMQX_ADMIN_USER}
  112. EMQX_DASHBOARD__DEFAULT_PASSWORD: ${EMQX_ADMIN_PASSWORD}
  113. deploy:
  114. resources:
  115. limits:
  116. cpus: '1.0'
  117. memory: 1G
  118. reservations:
  119. cpus: '0.25'
  120. memory: 256M
  121. logging:
  122. driver: json-file
  123. options:
  124. max-size: "30m"
  125. max-file: "3"
  126. nacos:
  127. restart: always
  128. ports:
  129. - "127.0.0.1:8848:8848"
  130. - "127.0.0.1:9848:9848"
  131. deploy:
  132. resources:
  133. limits:
  134. cpus: '1.0'
  135. memory: 1G
  136. reservations:
  137. cpus: '0.25'
  138. memory: 256M
  139. logging:
  140. driver: json-file
  141. options:
  142. max-size: "30m"
  143. max-file: "3"
  144. minio:
  145. restart: always
  146. ports:
  147. - "127.0.0.1:9000:9000"
  148. - "127.0.0.1:9001:9001"
  149. environment:
  150. MINIO_ROOT_USER: ${MINIO_USER}
  151. MINIO_ROOT_PASSWORD: ${MINIO_PASSWORD}
  152. deploy:
  153. resources:
  154. limits:
  155. cpus: '1.0'
  156. memory: 1G
  157. reservations:
  158. cpus: '0.25'
  159. memory: 256M
  160. logging:
  161. driver: json-file
  162. options:
  163. max-size: "30m"
  164. max-file: "3"
  165. # ==================== 应用服务 ====================
  166. gateway:
  167. restart: always
  168. image: ${REGISTRY:-}water/wm-gateway:${IMAGE_TAG:-latest}
  169. build: !reset null
  170. ports:
  171. - "127.0.0.1:8080:8080"
  172. environment:
  173. SPRING_PROFILES_ACTIVE: prod
  174. SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR: nacos:8848
  175. SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR: nacos:8848
  176. SPRING_DATA_REDIS_HOST: redis
  177. SPRING_DATA_REDIS_PASSWORD: ${REDIS_PASSWORD}
  178. JAVA_OPTS: "-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  179. deploy:
  180. resources:
  181. limits:
  182. cpus: '1.0'
  183. memory: 768M
  184. reservations:
  185. cpus: '0.25'
  186. memory: 256M
  187. logging:
  188. driver: json-file
  189. options:
  190. max-size: "50m"
  191. max-file: "5"
  192. security_opt:
  193. - no-new-privileges:true
  194. read_only: true
  195. tmpfs:
  196. - /tmp
  197. base:
  198. restart: always
  199. image: ${REGISTRY:-}water/wm-base:${IMAGE_TAG:-latest}
  200. build: !reset null
  201. ports:
  202. - "127.0.0.1:8091:8081"
  203. environment:
  204. SPRING_PROFILES_ACTIVE: prod
  205. SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR: nacos:8848
  206. SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB}
  207. SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER}
  208. SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD}
  209. SPRING_DATA_REDIS_HOST: redis
  210. SPRING_DATA_REDIS_PASSWORD: ${REDIS_PASSWORD}
  211. JAVA_OPTS: "-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  212. deploy:
  213. resources:
  214. limits:
  215. cpus: '1.0'
  216. memory: 768M
  217. reservations:
  218. cpus: '0.25'
  219. memory: 256M
  220. logging:
  221. driver: json-file
  222. options:
  223. max-size: "50m"
  224. max-file: "5"
  225. security_opt:
  226. - no-new-privileges:true
  227. read_only: true
  228. tmpfs:
  229. - /tmp
  230. iot:
  231. restart: always
  232. image: ${REGISTRY:-}water/wm-iot:${IMAGE_TAG:-latest}
  233. build: !reset null
  234. ports:
  235. - "127.0.0.1:8092:8082"
  236. environment:
  237. SPRING_PROFILES_ACTIVE: prod
  238. SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR: nacos:8848
  239. SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB}
  240. SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER}
  241. SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD}
  242. MQTT_BROKER_URL: tcp://emqx:1883
  243. JAVA_OPTS: "-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  244. deploy:
  245. resources:
  246. limits:
  247. cpus: '1.0'
  248. memory: 768M
  249. reservations:
  250. cpus: '0.25'
  251. memory: 256M
  252. logging:
  253. driver: json-file
  254. options:
  255. max-size: "50m"
  256. max-file: "5"
  257. security_opt:
  258. - no-new-privileges:true
  259. read_only: true
  260. tmpfs:
  261. - /tmp
  262. data-engine:
  263. restart: always
  264. image: ${REGISTRY:-}water/wm-data-engine:${IMAGE_TAG:-latest}
  265. build: !reset null
  266. ports:
  267. - "127.0.0.1:8093:8083"
  268. environment:
  269. SPRING_PROFILES_ACTIVE: prod
  270. SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR: nacos:8848
  271. SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB}
  272. SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER}
  273. SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD}
  274. JAVA_OPTS: "-Xms512m -Xmx1g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  275. deploy:
  276. resources:
  277. limits:
  278. cpus: '1.5'
  279. memory: 1536M
  280. reservations:
  281. cpus: '0.5'
  282. memory: 512M
  283. logging:
  284. driver: json-file
  285. options:
  286. max-size: "50m"
  287. max-file: "5"
  288. security_opt:
  289. - no-new-privileges:true
  290. read_only: true
  291. tmpfs:
  292. - /tmp
  293. bpm:
  294. restart: always
  295. image: ${REGISTRY:-}water/wm-bpm:${IMAGE_TAG:-latest}
  296. build: !reset null
  297. ports:
  298. - "127.0.0.1:8094:8084"
  299. environment:
  300. SPRING_PROFILES_ACTIVE: prod
  301. SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR: nacos:8848
  302. SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB}
  303. SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER}
  304. SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD}
  305. JAVA_OPTS: "-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  306. deploy:
  307. resources:
  308. limits:
  309. cpus: '1.0'
  310. memory: 768M
  311. reservations:
  312. cpus: '0.25'
  313. memory: 256M
  314. logging:
  315. driver: json-file
  316. options:
  317. max-size: "50m"
  318. max-file: "5"
  319. security_opt:
  320. - no-new-privileges:true
  321. read_only: true
  322. tmpfs:
  323. - /tmp
  324. production:
  325. restart: always
  326. image: ${REGISTRY:-}water/wm-production:${IMAGE_TAG:-latest}
  327. build: !reset null
  328. ports:
  329. - "127.0.0.1:8095:8085"
  330. environment:
  331. SPRING_PROFILES_ACTIVE: prod
  332. SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR: nacos:8848
  333. SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB}
  334. SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER}
  335. SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD}
  336. JAVA_OPTS: "-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  337. deploy:
  338. resources:
  339. limits:
  340. cpus: '1.0'
  341. memory: 768M
  342. reservations:
  343. cpus: '0.25'
  344. memory: 256M
  345. logging:
  346. driver: json-file
  347. options:
  348. max-size: "50m"
  349. max-file: "5"
  350. security_opt:
  351. - no-new-privileges:true
  352. read_only: true
  353. tmpfs:
  354. - /tmp
  355. revenue:
  356. restart: always
  357. image: ${REGISTRY:-}water/wm-revenue:${IMAGE_TAG:-latest}
  358. build: !reset null
  359. ports:
  360. - "127.0.0.1:8096:8086"
  361. environment:
  362. SPRING_PROFILES_ACTIVE: prod
  363. SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR: nacos:8848
  364. SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB}
  365. SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER}
  366. SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD}
  367. JAVA_OPTS: "-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  368. deploy:
  369. resources:
  370. limits:
  371. cpus: '1.0'
  372. memory: 768M
  373. reservations:
  374. cpus: '0.25'
  375. memory: 256M
  376. logging:
  377. driver: json-file
  378. options:
  379. max-size: "50m"
  380. max-file: "5"
  381. security_opt:
  382. - no-new-privileges:true
  383. read_only: true
  384. tmpfs:
  385. - /tmp
  386. patrol:
  387. restart: always
  388. image: ${REGISTRY:-}water/wm-patrol:${IMAGE_TAG:-latest}
  389. build: !reset null
  390. ports:
  391. - "127.0.0.1:8097:8087"
  392. environment:
  393. SPRING_PROFILES_ACTIVE: prod
  394. SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR: nacos:8848
  395. SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB}
  396. SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER}
  397. SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD}
  398. JAVA_OPTS: "-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  399. deploy:
  400. resources:
  401. limits:
  402. cpus: '1.0'
  403. memory: 768M
  404. reservations:
  405. cpus: '0.25'
  406. memory: 256M
  407. logging:
  408. driver: json-file
  409. options:
  410. max-size: "50m"
  411. max-file: "5"
  412. security_opt:
  413. - no-new-privileges:true
  414. read_only: true
  415. tmpfs:
  416. - /tmp
  417. notify:
  418. restart: always
  419. image: ${REGISTRY:-}water/wm-notify:${IMAGE_TAG:-latest}
  420. build: !reset null
  421. ports:
  422. - "127.0.0.1:8099:8089"
  423. environment:
  424. SPRING_PROFILES_ACTIVE: prod
  425. SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR: nacos:8848
  426. SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB}
  427. SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER}
  428. SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD}
  429. JAVA_OPTS: "-Xms128m -Xmx256m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  430. deploy:
  431. resources:
  432. limits:
  433. cpus: '0.5'
  434. memory: 384M
  435. reservations:
  436. cpus: '0.1'
  437. memory: 128M
  438. logging:
  439. driver: json-file
  440. options:
  441. max-size: "30m"
  442. max-file: "3"
  443. security_opt:
  444. - no-new-privileges:true
  445. read_only: true
  446. tmpfs:
  447. - /tmp
  448. job:
  449. restart: always
  450. image: ${REGISTRY:-}water/wm-job:${IMAGE_TAG:-latest}
  451. build: !reset null
  452. ports:
  453. - "127.0.0.1:8100:8090"
  454. environment:
  455. SPRING_PROFILES_ACTIVE: prod
  456. SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR: nacos:8848
  457. SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB}
  458. SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER}
  459. SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD}
  460. JAVA_OPTS: "-Xms128m -Xmx256m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  461. deploy:
  462. resources:
  463. limits:
  464. cpus: '0.5'
  465. memory: 384M
  466. reservations:
  467. cpus: '0.1'
  468. memory: 128M
  469. logging:
  470. driver: json-file
  471. options:
  472. max-size: "30m"
  473. max-file: "3"
  474. security_opt:
  475. - no-new-privileges:true
  476. read_only: true
  477. tmpfs:
  478. - /tmp
  479. # ==================== 前端 ====================
  480. frontend:
  481. restart: always
  482. image: ${REGISTRY:-}water/frontend:${IMAGE_TAG:-latest}
  483. build: !reset null
  484. ports:
  485. - "80:80"
  486. - "443:443"
  487. volumes:
  488. - ./deploy/production/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
  489. - /etc/letsencrypt:/etc/letsencrypt:ro
  490. - /var/www/certbot:/var/www/certbot:ro
  491. deploy:
  492. resources:
  493. limits:
  494. cpus: '0.5'
  495. memory: 256M
  496. reservations:
  497. cpus: '0.1'
  498. memory: 64M
  499. logging:
  500. driver: json-file
  501. options:
  502. max-size: "20m"
  503. max-file: "3"
  504. security_opt:
  505. - no-new-privileges:true