docker-compose.yml 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. services:
  2. ########## 数据库 ##########
  3. mysql:
  4. container_name: mysql
  5. image: mysql:8.4.5
  6. environment:
  7. MYSQL_ROOT_PASSWORD: aegis
  8. MYSQL_ROOT_HOST: '%'
  9. volumes:
  10. - mysql_data:/var/lib/mysql
  11. - ./mysql:/docker-entrypoint-initdb.d
  12. networks:
  13. - aegis_network
  14. command:
  15. - --lower_case_table_names=1
  16. - --max_connections=1000
  17. - --character-set-server=utf8mb4
  18. - --collation-server=utf8mb4_unicode_ci
  19. healthcheck:
  20. test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
  21. interval: 30s
  22. timeout: 10s
  23. retries: 10
  24. restart: always
  25. adminer:
  26. container_name: adminer
  27. image: adminer:5.3.0-standalone
  28. networks:
  29. - aegis_network
  30. restart: always
  31. depends_on:
  32. mysql:
  33. condition: service_healthy
  34. ########## 缓存 ##########
  35. redis:
  36. container_name: redis
  37. image: redis:8.0.2-bookworm
  38. networks:
  39. - aegis_network
  40. healthcheck:
  41. test: ["CMD", "redis-cli", "ping"]
  42. interval: 10s
  43. timeout: 30s
  44. retries: 50
  45. start_period: 30s
  46. restart: always
  47. redisinsight:
  48. container_name: redisinsight
  49. image: redis/redisinsight:2.70
  50. environment:
  51. RI_APP_HOST: redis
  52. RI_APP_PORT: 6379
  53. networks:
  54. - aegis_network
  55. restart: always
  56. depends_on:
  57. redis:
  58. condition: service_healthy
  59. ########## 视频监控 ##########
  60. zlmediakit:
  61. container_name: zlmediakit
  62. image: zlmediakit/zlmediakit:master
  63. environment:
  64. - TZ=Asia/Shanghai
  65. ports:
  66. - "554:554/tcp"
  67. - "554:554/udp"
  68. - "1935:1935/tcp"
  69. - "30000-30500:30000-30500/udp"
  70. networks:
  71. - aegis_network
  72. - public_network
  73. restart: always
  74. ########## 视频会议 ##########
  75. prosody:
  76. container_name: prosody
  77. image: jitsi/prosody:prosody-13.0.2
  78. environment:
  79. - AUTH_TYPE=internal
  80. - ENABLE_AUTH=0
  81. - ENABLE_GUESTS=1
  82. - XMPP_DOMAIN=meet.jitsi
  83. - XMPP_AUTH_DOMAIN=auth.meet.jitsi
  84. - XMPP_MUC_DOMAIN=muc.meet.jitsi
  85. - XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.jitsi
  86. - XMPP_GUEST_DOMAIN=guest.meet.jitsi
  87. - JVB_BREWERY_MUC=jvbbrewery
  88. - JVB_PORT=10000
  89. - JICOFO_AUTH_USER=focus
  90. - JICOFO_AUTH_PASSWORD=jitsi123
  91. - JVB_AUTH_USER=jvb
  92. - JVB_AUTH_PASSWORD=jitsi123
  93. networks:
  94. - aegis_network
  95. restart: always
  96. jvb:
  97. container_name: jvb
  98. image: jitsi/jvb:jvb-2.3-262-gd2dc4df00-1
  99. environment:
  100. - ENABLE_AUTH=0
  101. - XMPP_DOMAIN=meet.jitsi
  102. - XMPP_AUTH_DOMAIN=auth.meet.jitsi
  103. - XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.jitsi
  104. - XMPP_SERVER=prosody
  105. - JVB_BREWERY_MUC=jvbbrewery
  106. - JVB_PORT=10000
  107. - JVB_ENABLE_APIS=rest,colibri
  108. - JVB_AUTH_USER=jvb
  109. - JVB_AUTH_PASSWORD=jitsi123
  110. ports:
  111. - "10000:10000/udp"
  112. - "10000:10000/tcp"
  113. volumes:
  114. - jvb_config:/config
  115. networks:
  116. - aegis_network
  117. restart: always
  118. depends_on:
  119. - prosody
  120. jicofo:
  121. container_name: jicofo
  122. image: jitsi/jicofo:jicofo-1.0-1167-1
  123. environment:
  124. - ENABLE_AUTH=0
  125. - XMPP_DOMAIN=meet.jitsi
  126. - XMPP_AUTH_DOMAIN=auth.meet.jitsi
  127. - XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.jitsi
  128. - XMPP_SERVER=prosody
  129. - JVB_BREWERY_MUC=jvbbrewery
  130. - JVB_PORT=10000
  131. - JICOFO_AUTH_USER=focus
  132. - JICOFO_AUTH_PASSWORD=jitsi123
  133. networks:
  134. - aegis_network
  135. restart: always
  136. depends_on:
  137. - prosody
  138. - jvb
  139. jitsi-web:
  140. container_name: jitsi-web
  141. image: jitsi/web:web-1.0.8954-1
  142. environment:
  143. - ENABLE_AUTH=0
  144. - ENABLE_GUESTS=1
  145. - ENABLE_RECORDING=1
  146. - PUBLIC_URL=http://localhost:8443
  147. - XMPP_DOMAIN=meet.jitsi
  148. - XMPP_AUTH_DOMAIN=auth.meet.jitsi
  149. - XMPP_MUC_DOMAIN=muc.meet.jitsi
  150. - XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.jitsi
  151. - XMPP_GUEST_DOMAIN=guest.meet.jitsi
  152. - XMPP_BOSH_URL_BASE=http://prosody:5280
  153. - JVB_BREWERY_MUC=jvbbrewery
  154. - JVB_PORT=10000
  155. - DEFAULT_LANGUAGE=zh
  156. ports:
  157. - "8443:80"
  158. volumes:
  159. - jitsi_web_config:/config
  160. networks:
  161. - aegis_network
  162. - public_network
  163. restart: always
  164. depends_on:
  165. - prosody
  166. - jicofo
  167. - jvb
  168. ########## 反向代理 ##########
  169. nginx:
  170. container_name: nginx
  171. image: nginx:1.29.0-alpine3.22
  172. volumes:
  173. - ./nginx/aegis.conf:/etc/nginx/conf.d/aegis.conf
  174. ports:
  175. - "3306:3306"
  176. - "6379:6379"
  177. - "8080:8080"
  178. networks:
  179. - aegis_network
  180. - public_network
  181. restart: always
  182. depends_on:
  183. aegis-ui:
  184. condition: service_healthy
  185. ########## 应急指挥 ##########
  186. aegis-admin:
  187. container_name: aegis-admin
  188. build:
  189. context: ../
  190. dockerfile: ./deployment/Dockerfile
  191. target: aegis-admin
  192. environment:
  193. JVM_XMS: 512
  194. JVM_XMX: 1024
  195. SERVER_PORT: 8080
  196. SPRING_PROFILE: druid
  197. # ZLMediaKit 配置(通过环境变量覆盖 zlm.* 配置)
  198. ZLM_BASE_URL: http://zlmediakit:80 # 根据实际 ZLMediaKit HTTP 端口调整
  199. ZLM_SECRET: "" # 填写与 ZLMediaKit 配置中 api.secret 一致的值
  200. ZLM_APP: live
  201. ZLM_VHOST: __defaultVhost__
  202. ZLM_ENABLE_HLS: "true"
  203. ZLM_ENABLE_MP4: "false"
  204. volumes:
  205. - aegis_data:/app/upload
  206. networks:
  207. - aegis_network
  208. depends_on:
  209. mysql:
  210. condition: service_healthy
  211. redis:
  212. condition: service_healthy
  213. restart: always
  214. aegis-ui:
  215. container_name: aegis-ui
  216. build:
  217. context: ../
  218. dockerfile: ./deployment/Dockerfile
  219. target: aegis-ui
  220. networks:
  221. - aegis_network
  222. healthcheck:
  223. test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1:80 || exit 1"]
  224. interval: 30s
  225. timeout: 10s
  226. retries: 3
  227. restart: always
  228. ########## 存储卷 ##########
  229. volumes:
  230. mysql_data:
  231. aegis_data:
  232. jvb_config:
  233. jitsi_web_config:
  234. ########## 存储卷 ##########
  235. networks:
  236. aegis_network:
  237. driver: bridge
  238. internal: true
  239. public_network:
  240. driver: bridge
  241. internal: false