# 云眼视频监控平台 一键部署:MySQL + Redis + Nacos + 全部后端微服务 + 前端(Nginx) # 启动:在 docker 目录执行 .\start.ps1 或 .\start.bat name: ruoyi-qs-nvr x-java-env: &java-env TZ: ${TZ:-Asia/Shanghai} JAVA_OPTS: ${JAVA_OPTS:--Xms128m -Xmx384m -XX:+UseG1GC} NACOS_SERVER_ADDR: ${NACOS_SERVER_ADDR:-ruoyi-nacos:8848} # bootstrap.yml 写死 127.0.0.1 时,SPRING_CLOUD_NACOS_* 无法生效;用 JVM -D 强制覆盖 NACOS_JAVA_OPTS: >- -Dspring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR:-ruoyi-nacos:8848} -Dspring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR:-ruoyi-nacos:8848} # Docker 未部署 Sentinel 控制台,关闭 eager 避免连 127.0.0.1:8718 刷错 SPRING_CLOUD_SENTINEL_EAGER: "false" SENTINEL_EAGER: "false" # 未部署 Sentinel 控制台时,避免 actuator 周期性 WARN MANAGEMENT_HEALTH_SENTINEL_ENABLED: "false" SPRING_PROFILES_ACTIVE: dev services: ruoyi-mysql: container_name: ruoyi-mysql image: mysql:5.7 build: context: ./mysql restart: unless-stopped ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-password} MYSQL_DATABASE: ${MYSQL_DATABASE:-ry-cloud} TZ: ${TZ:-Asia/Shanghai} volumes: - ./mysql/conf:/etc/mysql/conf.d - ./mysql/logs:/logs - ./mysql/data:/var/lib/mysql command: - mysqld - --innodb-buffer-pool-size=128M - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci - --default-time-zone=+8:00 - --lower-case-table-names=1 networks: - ruoyi-net healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-p${MYSQL_ROOT_PASSWORD:-password}"] interval: 10s timeout: 5s retries: 15 start_period: 40s ruoyi-redis: container_name: ruoyi-redis image: redis:7-alpine build: context: ./redis restart: unless-stopped ports: - "6379:6379" volumes: - ./redis/conf/redis.conf:/home/ruoyi/redis/redis.conf - ./redis/data:/data command: redis-server /home/ruoyi/redis/redis.conf --dir /data networks: - ruoyi-net healthcheck: test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-123456}", "ping"] interval: 10s timeout: 5s retries: 8 ruoyi-nacos: container_name: ruoyi-nacos image: nacos/nacos-server:v3.0.2 build: context: ./nacos restart: unless-stopped environment: MODE: standalone TZ: ${TZ:-Asia/Shanghai} # Nacos 3.x 启动必填(即使关闭鉴权也需 Base64 Token) NACOS_AUTH_ENABLE: "false" NACOS_AUTH_TOKEN: ${NACOS_AUTH_TOKEN:-U2VjcmV0S2V5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OQ==} NACOS_AUTH_IDENTITY_KEY: ${NACOS_AUTH_IDENTITY_KEY:-serverIdentity} NACOS_AUTH_IDENTITY_VALUE: ${NACOS_AUTH_IDENTITY_VALUE:-security} JVM_XMS: 256m JVM_XMX: 512m JVM_XMN: 128m volumes: - ./nacos/logs:/home/nacos/logs - ./nacos/conf/application.properties:/home/nacos/conf/application.properties ports: - "8848:8848" - "9848:9848" - "9849:9849" depends_on: ruoyi-mysql: condition: service_healthy networks: - ruoyi-net healthcheck: test: ["CMD-SHELL", "curl -sf http://127.0.0.1:8848/nacos/actuator/health | grep -q UP"] interval: 15s timeout: 10s retries: 25 start_period: 120s ruoyi-gateway: container_name: ruoyi-gateway build: context: ./ruoyi/gateway dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "8080:8080" depends_on: ruoyi-redis: condition: service_healthy ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-auth: container_name: ruoyi-auth build: context: ./ruoyi/auth dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "9200:9200" depends_on: ruoyi-redis: condition: service_healthy ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-modules-system: container_name: ruoyi-modules-system build: context: ./ruoyi/modules/system dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "9201:9201" depends_on: ruoyi-redis: condition: service_healthy ruoyi-mysql: condition: service_healthy ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-modules-gen: container_name: ruoyi-modules-gen build: context: ./ruoyi/modules/gen dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "9202:9202" depends_on: ruoyi-mysql: condition: service_healthy ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-modules-job: container_name: ruoyi-modules-job build: context: ./ruoyi/modules/job dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "9203:9203" depends_on: ruoyi-mysql: condition: service_healthy ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-modules-file: container_name: ruoyi-modules-file build: context: ./ruoyi/modules/file dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "9300:9300" volumes: - ./ruoyi/uploadPath:/home/ruoyi/uploadPath depends_on: ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-visual-monitor: container_name: ruoyi-visual-monitor build: context: ./ruoyi/visual/monitor dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "9100:9100" depends_on: ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-modules-qs: container_name: ruoyi-modules-qs build: context: ./ruoyi/modules/qs dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "9205:9205" depends_on: ruoyi-redis: condition: service_healthy ruoyi-mysql: condition: service_healthy ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-modules-zlm: container_name: ruoyi-modules-zlm build: context: ./ruoyi/modules/zlm dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "8090:8090" depends_on: ruoyi-redis: condition: service_healthy ruoyi-mysql: condition: service_healthy ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-modules-gb28181: container_name: ruoyi-modules-gb28181 build: context: ./ruoyi/modules/gb28181 dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "9209:9209" - "8116:8116/tcp" - "8116:8116/udp" depends_on: ruoyi-redis: condition: service_healthy ruoyi-mysql: condition: service_healthy ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-modules-onvif: container_name: ruoyi-modules-onvif build: context: ./ruoyi/modules/onvif dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "9208:9208" depends_on: ruoyi-redis: condition: service_healthy ruoyi-mysql: condition: service_healthy ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-modules-jt1078: container_name: ruoyi-modules-jt1078 build: context: ./ruoyi/modules/jt1078 dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "9210:9210" depends_on: ruoyi-redis: condition: service_healthy ruoyi-mysql: condition: service_healthy ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-modules-haikang: profiles: ["vendor-sdk"] container_name: ruoyi-modules-haikang build: context: ./ruoyi/modules/haikang dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "9204:9204" depends_on: ruoyi-redis: condition: service_healthy ruoyi-mysql: condition: service_healthy ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-modules-haikang-isup: profiles: ["vendor-sdk"] container_name: ruoyi-modules-haikang-isup build: context: ./ruoyi/modules/haikang-isup dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "9206:9206" depends_on: ruoyi-redis: condition: service_healthy ruoyi-mysql: condition: service_healthy ruoyi-nacos: condition: service_healthy networks: - ruoyi-net ruoyi-modules-dahua: profiles: ["vendor-sdk"] container_name: ruoyi-modules-dahua build: context: ./ruoyi/modules/dahua dockerfile: dockerfile restart: unless-stopped environment: <<: *java-env ports: - "9207:9207" depends_on: ruoyi-redis: condition: service_healthy ruoyi-mysql: condition: service_healthy ruoyi-nacos: condition: service_healthy networks: - ruoyi-net # 前端 + 反向代理(容器内 npm build,无需本机 Node) ruoyi-nginx: container_name: ruoyi-nginx build: context: ../.. dockerfile: ruoyi-qs-nvr-master/docker/nginx/Dockerfile restart: unless-stopped ports: - "80:80" volumes: - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf - ./nginx/logs:/var/log/nginx depends_on: - ruoyi-gateway - ruoyi-modules-file networks: - ruoyi-net networks: ruoyi-net: driver: bridge