docker-compose.yml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421
  1. # 云眼视频监控平台 一键部署:MySQL + Redis + Nacos + 全部后端微服务 + 前端(Nginx)
  2. # 启动:在 docker 目录执行 .\start.ps1 或 .\start.bat
  3. name: ruoyi-qs-nvr
  4. x-java-env: &java-env
  5. TZ: ${TZ:-Asia/Shanghai}
  6. JAVA_OPTS: ${JAVA_OPTS:--Xms128m -Xmx384m -XX:+UseG1GC}
  7. NACOS_SERVER_ADDR: ${NACOS_SERVER_ADDR:-ruoyi-nacos:8848}
  8. # bootstrap.yml 写死 127.0.0.1 时,SPRING_CLOUD_NACOS_* 无法生效;用 JVM -D 强制覆盖
  9. NACOS_JAVA_OPTS: >-
  10. -Dspring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR:-ruoyi-nacos:8848}
  11. -Dspring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR:-ruoyi-nacos:8848}
  12. # Docker 未部署 Sentinel 控制台,关闭 eager 避免连 127.0.0.1:8718 刷错
  13. SPRING_CLOUD_SENTINEL_EAGER: "false"
  14. SENTINEL_EAGER: "false"
  15. # 未部署 Sentinel 控制台时,避免 actuator 周期性 WARN
  16. MANAGEMENT_HEALTH_SENTINEL_ENABLED: "false"
  17. SPRING_PROFILES_ACTIVE: dev
  18. services:
  19. ruoyi-mysql:
  20. container_name: ruoyi-mysql
  21. image: mysql:5.7
  22. build:
  23. context: ./mysql
  24. restart: unless-stopped
  25. ports:
  26. - "3306:3306"
  27. environment:
  28. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-password}
  29. MYSQL_DATABASE: ${MYSQL_DATABASE:-ry-cloud}
  30. TZ: ${TZ:-Asia/Shanghai}
  31. volumes:
  32. - ./mysql/conf:/etc/mysql/conf.d
  33. - ./mysql/logs:/logs
  34. - ./mysql/data:/var/lib/mysql
  35. command:
  36. - mysqld
  37. - --innodb-buffer-pool-size=128M
  38. - --character-set-server=utf8mb4
  39. - --collation-server=utf8mb4_unicode_ci
  40. - --default-time-zone=+8:00
  41. - --lower-case-table-names=1
  42. networks:
  43. - ruoyi-net
  44. healthcheck:
  45. test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-p${MYSQL_ROOT_PASSWORD:-password}"]
  46. interval: 10s
  47. timeout: 5s
  48. retries: 15
  49. start_period: 40s
  50. ruoyi-redis:
  51. container_name: ruoyi-redis
  52. image: redis:7-alpine
  53. build:
  54. context: ./redis
  55. restart: unless-stopped
  56. ports:
  57. - "6379:6379"
  58. volumes:
  59. - ./redis/conf/redis.conf:/home/ruoyi/redis/redis.conf
  60. - ./redis/data:/data
  61. command: redis-server /home/ruoyi/redis/redis.conf --dir /data
  62. networks:
  63. - ruoyi-net
  64. healthcheck:
  65. test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-123456}", "ping"]
  66. interval: 10s
  67. timeout: 5s
  68. retries: 8
  69. ruoyi-nacos:
  70. container_name: ruoyi-nacos
  71. image: nacos/nacos-server:v3.0.2
  72. build:
  73. context: ./nacos
  74. restart: unless-stopped
  75. environment:
  76. MODE: standalone
  77. TZ: ${TZ:-Asia/Shanghai}
  78. # Nacos 3.x 启动必填(即使关闭鉴权也需 Base64 Token)
  79. NACOS_AUTH_ENABLE: "false"
  80. NACOS_AUTH_TOKEN: ${NACOS_AUTH_TOKEN:-U2VjcmV0S2V5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OQ==}
  81. NACOS_AUTH_IDENTITY_KEY: ${NACOS_AUTH_IDENTITY_KEY:-serverIdentity}
  82. NACOS_AUTH_IDENTITY_VALUE: ${NACOS_AUTH_IDENTITY_VALUE:-security}
  83. JVM_XMS: 256m
  84. JVM_XMX: 512m
  85. JVM_XMN: 128m
  86. volumes:
  87. - ./nacos/logs:/home/nacos/logs
  88. - ./nacos/conf/application.properties:/home/nacos/conf/application.properties
  89. ports:
  90. - "8848:8848"
  91. - "9848:9848"
  92. - "9849:9849"
  93. depends_on:
  94. ruoyi-mysql:
  95. condition: service_healthy
  96. networks:
  97. - ruoyi-net
  98. healthcheck:
  99. test: ["CMD-SHELL", "curl -sf http://127.0.0.1:8848/nacos/actuator/health | grep -q UP"]
  100. interval: 15s
  101. timeout: 10s
  102. retries: 25
  103. start_period: 120s
  104. ruoyi-gateway:
  105. container_name: ruoyi-gateway
  106. build:
  107. context: ./ruoyi/gateway
  108. dockerfile: dockerfile
  109. restart: unless-stopped
  110. environment:
  111. <<: *java-env
  112. ports:
  113. - "8080:8080"
  114. depends_on:
  115. ruoyi-redis:
  116. condition: service_healthy
  117. ruoyi-nacos:
  118. condition: service_healthy
  119. networks:
  120. - ruoyi-net
  121. ruoyi-auth:
  122. container_name: ruoyi-auth
  123. build:
  124. context: ./ruoyi/auth
  125. dockerfile: dockerfile
  126. restart: unless-stopped
  127. environment:
  128. <<: *java-env
  129. ports:
  130. - "9200:9200"
  131. depends_on:
  132. ruoyi-redis:
  133. condition: service_healthy
  134. ruoyi-nacos:
  135. condition: service_healthy
  136. networks:
  137. - ruoyi-net
  138. ruoyi-modules-system:
  139. container_name: ruoyi-modules-system
  140. build:
  141. context: ./ruoyi/modules/system
  142. dockerfile: dockerfile
  143. restart: unless-stopped
  144. environment:
  145. <<: *java-env
  146. ports:
  147. - "9201:9201"
  148. depends_on:
  149. ruoyi-redis:
  150. condition: service_healthy
  151. ruoyi-mysql:
  152. condition: service_healthy
  153. ruoyi-nacos:
  154. condition: service_healthy
  155. networks:
  156. - ruoyi-net
  157. ruoyi-modules-gen:
  158. container_name: ruoyi-modules-gen
  159. build:
  160. context: ./ruoyi/modules/gen
  161. dockerfile: dockerfile
  162. restart: unless-stopped
  163. environment:
  164. <<: *java-env
  165. ports:
  166. - "9202:9202"
  167. depends_on:
  168. ruoyi-mysql:
  169. condition: service_healthy
  170. ruoyi-nacos:
  171. condition: service_healthy
  172. networks:
  173. - ruoyi-net
  174. ruoyi-modules-job:
  175. container_name: ruoyi-modules-job
  176. build:
  177. context: ./ruoyi/modules/job
  178. dockerfile: dockerfile
  179. restart: unless-stopped
  180. environment:
  181. <<: *java-env
  182. ports:
  183. - "9203:9203"
  184. depends_on:
  185. ruoyi-mysql:
  186. condition: service_healthy
  187. ruoyi-nacos:
  188. condition: service_healthy
  189. networks:
  190. - ruoyi-net
  191. ruoyi-modules-file:
  192. container_name: ruoyi-modules-file
  193. build:
  194. context: ./ruoyi/modules/file
  195. dockerfile: dockerfile
  196. restart: unless-stopped
  197. environment:
  198. <<: *java-env
  199. ports:
  200. - "9300:9300"
  201. volumes:
  202. - ./ruoyi/uploadPath:/home/ruoyi/uploadPath
  203. depends_on:
  204. ruoyi-nacos:
  205. condition: service_healthy
  206. networks:
  207. - ruoyi-net
  208. ruoyi-visual-monitor:
  209. container_name: ruoyi-visual-monitor
  210. build:
  211. context: ./ruoyi/visual/monitor
  212. dockerfile: dockerfile
  213. restart: unless-stopped
  214. environment:
  215. <<: *java-env
  216. ports:
  217. - "9100:9100"
  218. depends_on:
  219. ruoyi-nacos:
  220. condition: service_healthy
  221. networks:
  222. - ruoyi-net
  223. ruoyi-modules-qs:
  224. container_name: ruoyi-modules-qs
  225. build:
  226. context: ./ruoyi/modules/qs
  227. dockerfile: dockerfile
  228. restart: unless-stopped
  229. environment:
  230. <<: *java-env
  231. ports:
  232. - "9205:9205"
  233. depends_on:
  234. ruoyi-redis:
  235. condition: service_healthy
  236. ruoyi-mysql:
  237. condition: service_healthy
  238. ruoyi-nacos:
  239. condition: service_healthy
  240. networks:
  241. - ruoyi-net
  242. ruoyi-modules-zlm:
  243. container_name: ruoyi-modules-zlm
  244. build:
  245. context: ./ruoyi/modules/zlm
  246. dockerfile: dockerfile
  247. restart: unless-stopped
  248. environment:
  249. <<: *java-env
  250. ports:
  251. - "8090:8090"
  252. depends_on:
  253. ruoyi-redis:
  254. condition: service_healthy
  255. ruoyi-mysql:
  256. condition: service_healthy
  257. ruoyi-nacos:
  258. condition: service_healthy
  259. networks:
  260. - ruoyi-net
  261. ruoyi-modules-gb28181:
  262. container_name: ruoyi-modules-gb28181
  263. build:
  264. context: ./ruoyi/modules/gb28181
  265. dockerfile: dockerfile
  266. restart: unless-stopped
  267. environment:
  268. <<: *java-env
  269. ports:
  270. - "9209:9209"
  271. - "8116:8116/tcp"
  272. - "8116:8116/udp"
  273. depends_on:
  274. ruoyi-redis:
  275. condition: service_healthy
  276. ruoyi-mysql:
  277. condition: service_healthy
  278. ruoyi-nacos:
  279. condition: service_healthy
  280. networks:
  281. - ruoyi-net
  282. ruoyi-modules-onvif:
  283. container_name: ruoyi-modules-onvif
  284. build:
  285. context: ./ruoyi/modules/onvif
  286. dockerfile: dockerfile
  287. restart: unless-stopped
  288. environment:
  289. <<: *java-env
  290. ports:
  291. - "9208:9208"
  292. depends_on:
  293. ruoyi-redis:
  294. condition: service_healthy
  295. ruoyi-mysql:
  296. condition: service_healthy
  297. ruoyi-nacos:
  298. condition: service_healthy
  299. networks:
  300. - ruoyi-net
  301. ruoyi-modules-jt1078:
  302. container_name: ruoyi-modules-jt1078
  303. build:
  304. context: ./ruoyi/modules/jt1078
  305. dockerfile: dockerfile
  306. restart: unless-stopped
  307. environment:
  308. <<: *java-env
  309. ports:
  310. - "9210:9210"
  311. depends_on:
  312. ruoyi-redis:
  313. condition: service_healthy
  314. ruoyi-mysql:
  315. condition: service_healthy
  316. ruoyi-nacos:
  317. condition: service_healthy
  318. networks:
  319. - ruoyi-net
  320. ruoyi-modules-haikang:
  321. profiles: ["vendor-sdk"]
  322. container_name: ruoyi-modules-haikang
  323. build:
  324. context: ./ruoyi/modules/haikang
  325. dockerfile: dockerfile
  326. restart: unless-stopped
  327. environment:
  328. <<: *java-env
  329. ports:
  330. - "9204:9204"
  331. depends_on:
  332. ruoyi-redis:
  333. condition: service_healthy
  334. ruoyi-mysql:
  335. condition: service_healthy
  336. ruoyi-nacos:
  337. condition: service_healthy
  338. networks:
  339. - ruoyi-net
  340. ruoyi-modules-haikang-isup:
  341. profiles: ["vendor-sdk"]
  342. container_name: ruoyi-modules-haikang-isup
  343. build:
  344. context: ./ruoyi/modules/haikang-isup
  345. dockerfile: dockerfile
  346. restart: unless-stopped
  347. environment:
  348. <<: *java-env
  349. ports:
  350. - "9206:9206"
  351. depends_on:
  352. ruoyi-redis:
  353. condition: service_healthy
  354. ruoyi-mysql:
  355. condition: service_healthy
  356. ruoyi-nacos:
  357. condition: service_healthy
  358. networks:
  359. - ruoyi-net
  360. ruoyi-modules-dahua:
  361. profiles: ["vendor-sdk"]
  362. container_name: ruoyi-modules-dahua
  363. build:
  364. context: ./ruoyi/modules/dahua
  365. dockerfile: dockerfile
  366. restart: unless-stopped
  367. environment:
  368. <<: *java-env
  369. ports:
  370. - "9207:9207"
  371. depends_on:
  372. ruoyi-redis:
  373. condition: service_healthy
  374. ruoyi-mysql:
  375. condition: service_healthy
  376. ruoyi-nacos:
  377. condition: service_healthy
  378. networks:
  379. - ruoyi-net
  380. # 前端 + 反向代理(容器内 npm build,无需本机 Node)
  381. ruoyi-nginx:
  382. container_name: ruoyi-nginx
  383. build:
  384. context: ../..
  385. dockerfile: ruoyi-qs-nvr-master/docker/nginx/Dockerfile
  386. restart: unless-stopped
  387. ports:
  388. - "80:80"
  389. volumes:
  390. - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
  391. - ./nginx/logs:/var/log/nginx
  392. depends_on:
  393. - ruoyi-gateway
  394. - ruoyi-modules-file
  395. networks:
  396. - ruoyi-net
  397. networks:
  398. ruoyi-net:
  399. driver: bridge