version: '3.8' # 国标 GB28181 视频平台 — 一键部署 # 使用: docker compose up -d services: # ========== MySQL ========== wvp-mysql: image: cr.loongnix.cn/library/mysql:8.0.40 container_name: wvp-mysql user: "0:0" restart: always network_mode: host environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: wvp volumes: - /data/20260723/mysql8040:/var/lib/mysql - /data/20260723/init:/docker-entrypoint-initdb.d command: - --port=33306 - --default-authentication-plugin=mysql_native_password healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-P", "33306", "-uroot", "-p${MYSQL_ROOT_PASSWORD}"] interval: 10s timeout: 10s retries: 30 start_period: 60s # ========== Redis ========== wvp-redis: image: cr.loongnix.cn/library/redis:6.0.20 container_name: wvp-redis user: "0:0" restart: always network_mode: host volumes: - /data/20260723/redis6020:/data command: - redis-server - --port - "36379" - --requirepass - ${REDIS_PASSWORD} - --appendonly - "yes" healthcheck: test: ["CMD", "redis-cli", "-p", "36379", "-a", "${REDIS_PASSWORD}", "ping"] interval: 5s timeout: 5s retries: 5 # ========== ZLMediaKit ========== zlm: image: zlmediakit:loong64-v2 container_name: zlm user: "0:0" restart: always network_mode: host volumes: - /data/20260723/zlm-v2/conf/config.ini:/opt/zlm/config.ini - /data/20260723/zlm-v2/log:/opt/zlm/log - /data/20260723/zlm-v2/www:/opt/zlm/www depends_on: wvp-mysql: condition: service_healthy wvp-redis: condition: service_healthy # ========== WVP 信令服务器 ========== wvp: image: wvp-pro:2.7.4-patched container_name: wvp user: "0:0" restart: always network_mode: host volumes: - /data/20260723/wvp274/log:/app/logs - /data/20260723/wvp274/config:/app/config environment: TZ: Asia/Shanghai SERVER_PORT: "18080" SIP_ID: ${SIP_ID} SIP_PORT: "5060" SIP_DOMAIN: ${SIP_DOMAIN} SIP_PASSWORD: ${SIP_PASSWORD} MEDIA_ID: zlmediakit MEDIA_SECRET: ${MEDIA_SECRET} MEDIA_IP: 127.0.0.1 MEDIA_TYPE: zlm MEDIA_HTTP_PORT: "8001" MEDIA_HOOK_IP: 127.0.0.1 MEDIA_STREAM_IP: ${SERVER_IP} MEDIA_SDP_IP: ${SERVER_IP} MEDIA_WAN_IP: ${SERVER_IP} MEDIA_RTP_ENABLE: "true" MEDIA_RTP_PORT_RANGE: 30000-35000 MEDIA_RTP_SEND_PORT_RANGE: 30000-35000 SPRING_DATASOURCE_URL: jdbc:mysql://127.0.0.1:33306/wvp?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true SPRING_DATASOURCE_USERNAME: root SPRING_DATASOURCE_PASSWORD: ${MYSQL_ROOT_PASSWORD} SPRING_DATA_REDIS_HOST: 127.0.0.1 SPRING_DATA_REDIS_PORT: "36379" SPRING_DATA_REDIS_PASSWORD: ${REDIS_PASSWORD} USER_SETTINGS_DOC_ENABLE: "false" depends_on: zlm: condition: service_started