diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..eef220eb1 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +docker/volumes \ No newline at end of file diff --git a/.gitignore b/.gitignore index 776ebe10e..c937a5c05 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,5 @@ hs_err_pid* /src/main/resources/static/ certificates +/.vs +/docker/volumes diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 8ad454822..97b7a8c55 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,7 +1,7 @@ version: '3' services: polaris-redis: - image: polaris-tian-docker.pkg.coding.net/qt/polaris/polaris-redis:latest + image: redis:latest # 使用官方Redis镜像 restart: unless-stopped healthcheck: test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ] @@ -11,8 +11,8 @@ services: start_period: 10s networks: - media-net - ports: - - 6379:6379 + # ports: + # - 6379:6379 volumes: - ./redis/conf/redis.conf:/opt/polaris/redis/redis.conf - ./volumes/redis/data/:/data @@ -21,7 +21,7 @@ services: command: redis-server /opt/polaris/redis/redis.conf --appendonly yes polaris-mysql: - image: polaris-tian-docker.pkg.coding.net/qt/polaris/polaris-mysql:latest + image: mysql:8 # 使用官方MySQL 8镜像 restart: unless-stopped healthcheck: test: [ "CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/3306" ] @@ -34,18 +34,18 @@ services: environment: MYSQL_DATABASE: wvp MYSQL_ROOT_PASSWORD: root - MYSQL_USER: root - MYSQL_PASSWORD: root + MYSQL_USER: wvp_user + MYSQL_PASSWORD: wvp_password TZ: Asia/Shanghai - ports: - - 3306:3306 + # ports: + # - 3306:3306 volumes: - ./mysql/conf:/etc/mysql/conf.d - ./logs/mysql:/logs - ./volumes/mysql/data:/var/lib/mysql + - ../数据库/2.7.4/初始化-mysql-2.7.4.sql:/docker-entrypoint-initdb.d/init.sql # 初始化SQL脚本目录 command: [ - 'mysqld', - '--default-authentication-plugin=mysql_native_password', + # '--default-authentication-plugin=mysql_native_password', '--innodb-buffer-pool-size=80M', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_general_ci', @@ -54,7 +54,7 @@ services: ] polaris-media: - image: polaris-tian-docker.pkg.coding.net/qt/polaris/polaris-media:latest + image: zlmediakit/zlmediakit:master # 替换为官方镜像 restart: always networks: - media-net @@ -65,9 +65,18 @@ services: volumes: - ./volumes/video:/opt/media/www/record/ - ./logs/media:/opt/media/log/ + - ./media/config.ini:/conf/config.ini + command: [ + 'MediaServer', + '-c', '/conf/config.ini', + '-l', '0' + ] polaris-wvp: - image: polaris-tian-docker.pkg.coding.net/qt/polaris/polaris-wvp:latest + # 显式指定构建上下文和Dockerfile路径 + build: + context: .. # 构建上下文的根路径 + dockerfile: ./docker/wvp/Dockerfile # 相对于上下文路径的Dockerfile位置 restart: always networks: - media-net @@ -84,7 +93,7 @@ services: - polaris-mysql - polaris-media volumes: - - ./wvp/wvp/:/opt/wvp/wvp/ + - ./wvp/wvp/:/opt/ylcx/wvp/ - ./logs/wvp:/opt/wvp/logs/ environment: TZ: "Asia/Shanghai" @@ -98,13 +107,16 @@ services: REDIS_PORT: 6379 DATABASE_HOST: polaris-mysql DATABASE_PORT: 3306 - DATABASE_USER: wvp - DATABASE_PASSWORD: wvp + DATABASE_USER: wvp_user + DATABASE_PASSWORD: wvp_password # 前端跨域配置,nginx容器所在物理机IP NGINX_HOST: http://127.0.0.1:8080 polaris-nginx: - image: polaris-tian-docker.pkg.coding.net/qt/polaris/polaris-nginx:latest + # 显式指定构建上下文和Dockerfile路径 + build: + context: .. # 构建上下文的根路径 + dockerfile: ./docker/nginx/Dockerfile # 相对于上下文路径的Dockerfile位置 ports: - "8080:8080" depends_on: diff --git a/docker/media/config.ini b/docker/media/config.ini index 2098e8d49..9ab184437 100644 --- a/docker/media/config.ini +++ b/docker/media/config.ini @@ -52,21 +52,21 @@ alive_interval=10.0 enable=1 on_flow_report= on_http_access= -on_play= -on_publish= -on_record_mp4= +on_play=http://127.0.0.1:18978/index/hook/on_play +on_publish=http://127.0.0.1:18978/index/hook/on_publish +on_record_mp4=http://127.0.0.1:18978/index/hook/on_record_mp4 on_record_ts= -on_rtp_server_timeout= +on_rtp_server_timeout=http://127.0.0.1:18978/index/hook/on_rtp_server_timeout on_rtsp_auth= on_rtsp_realm= -on_send_rtp_stopped= +on_send_rtp_stopped=http://127.0.0.1:18978/index/hook/on_send_rtp_stopped on_server_exited= -on_server_keepalive= -on_server_started= +on_server_keepalive=http://127.0.0.1:18978/index/hook/on_server_keepalive +on_server_started=http://127.0.0.1:18978/index/hook/on_server_started on_shell_login= -on_stream_changed= -on_stream_none_reader= -on_stream_not_found= +on_stream_changed=http://127.0.0.1:18978/index/hook/on_stream_changed +on_stream_none_reader=http://127.0.0.1:18978/index/hook/on_stream_none_reader +on_stream_not_found=http://127.0.0.1:18978/index/hook/on_stream_not_found retry=1 retry_delay=3.0 stream_changed_schemas=rtsp/rtmp/fmp4/ts/hls/hls.fmp4 @@ -111,7 +111,7 @@ hls_save_path=./www modify_stamp=2 mp4_as_player=0 mp4_max_second=3600 -mp4_save_path=/home +mp4_save_path=/opt/media paced_sender_ms=0 rtmp_demand=0 rtsp_demand=0 @@ -126,6 +126,7 @@ fileRepeat=0 sampleMS=500 [rtc] +bfilter=0 datachannel_echo=0 externIP= maxRtpCacheMS=5000 @@ -165,6 +166,7 @@ dumpDir= gop_cache=1 h264_pt=98 h265_pt=99 +merge_frame=1 opus_pt=100 port=10000 port_range=30000-30500 @@ -189,6 +191,7 @@ port=0 [srt] latencyMul=4 +passPhrase= pktBufSize=8192 port=9000 timeoutSec=5 diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile index 91403f8e7..5e57aab51 100644 --- a/docker/nginx/Dockerfile +++ b/docker/nginx/Dockerfile @@ -1,19 +1,28 @@ +FROM ubuntu:24.04 AS builder + + +RUN apt-get update && \ + apt-get install -y nodejs npm && \ + rm -rf /var/lib/apt/lists/* + +COPY ./web /build +WORKDIR /build + +RUN npm --registry=https://registry.npmmirror.com install +RUN npm run build:prod + +WORKDIR /src/main/resources +RUN ls + +WORKDIR /src/main/resources/static +RUN ls + FROM nginx:alpine -RUN apk add --no-cache bash - ARG TZ=Asia/Shanghai -RUN \ - sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \ - apk update && \ - apk add tzdata -RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && \ - echo '${TZ}' > /etc/timezone -RUN rm -rf /etc/nginx/conf.d/* -RUN mkdir /opt/dist -COPY ./dist /opt/dist -COPY ./conf/nginx.conf /etc/nginx/conf.d + +COPY --from=builder /src/main/resources/static /opt/dist CMD ["nginx","-g","daemon off;"] diff --git a/docker/wvp/Dockerfile b/docker/wvp/Dockerfile index 67286b19f..e66b4cda4 100644 --- a/docker/wvp/Dockerfile +++ b/docker/wvp/Dockerfile @@ -1,64 +1,84 @@ -FROM ubuntu:20.04 AS build -ARG Platfrom=amd64 -ARG JDK_NAME +FROM ringcentral/jdk:11 AS builder EXPOSE 18978/tcp EXPOSE 8116/tcp EXPOSE 8116/udp EXPOSE 8080/tcp -RUN apt-get update && \ - DEBIAN_FRONTEND="noninteractive" \ - apt-get install -y --no-install-recommends \ - wget \ - cmake \ - maven \ - git \ - ca-certificates \ - tzdata \ - curl \ - libpcre3 \ - libpcre3-dev \ - zlib1g-dev \ - openssl \ - libssl-dev \ - gdb && \ - apt-get autoremove -y && \ - apt-get clean -y && \ - rm -rf /var/lib/apt/lists/* +#RUN apt-get update && \ + #DEBIAN_FRONTEND="noninteractive" \ + #apt-get install -y --no-install-recommends \ + #wget \ + #cmake \ + #maven \ + #git \ + #ca-certificates \ + #tzdata \ + #curl \ + #libpcre3 \ + #libpcre3-dev \ + #zlib1g-dev \ + #openssl \ + #libssl-dev \ + #gdb && \ + #apt-get autoremove -y && \ + #apt-get clean -y && \ + #rm -rf /var/lib/apt/lists/* -# install jdk1.8 -RUN mkdir -p /opt/download -WORKDIR /opt/download -RUN if [ "$Platfrom" = "arm64" ]; \ - then \ - wget https://polaris-tian-generic.pkg.coding.net/qt/autopliot/jdk-8u411-linux-aarch64.tar.gz?version=latest --no-check-certificate -O jdk-8.tar.gz && \ - tar -zxvf /opt/download/jdk-8.tar.gz -C /usr/local/ --transform 's/jdk1.8.0_411/java/' && \ - rm /opt/download/jdk-8.tar.gz; \ - else \ - wget https://polaris-tian-generic.pkg.coding.net/qt/autopliot/jdk-8u202-linux-x64.tar.gz?version=latest --no-check-certificate -O jdk-8.tar.gz && \ - tar -zxvf /opt/download/jdk-8.tar.gz -C /usr/local/ --transform 's/jdk1.8.0_202/java/' && \ - rm /opt/download/jdk-8.tar.gz; \ - fi +## install jdk1.8 +#RUN mkdir -p /opt/download +#WORKDIR /opt/download +#RUN if [ "$Platfrom" = "arm64" ]; \ + #then \ + #wget https://polaris-tian-generic.pkg.coding.net/qt/autopliot/jdk-8u411-linux-aarch64.tar.gz?version=latest --no-check-certificate -O jdk-8.tar.gz && \ + #tar -zxvf /opt/download/jdk-8.tar.gz -C /usr/local/ --transform 's/jdk1.8.0_411/java/' && \ + #rm /opt/download/jdk-8.tar.gz; \ + #else \ + #wget https://polaris-tian-generic.pkg.coding.net/qt/autopliot/jdk-8u202-linux-x64.tar.gz?version=latest --no-check-certificate -O jdk-8.tar.gz && \ + #tar -zxvf /opt/download/jdk-8.tar.gz -C /usr/local/ --transform 's/jdk1.8.0_202/java/' && \ + #rm /opt/download/jdk-8.tar.gz; \ + #fi -ENV JAVA_HOME /usr/local/java/ -ENV JRE_HOME ${JAVA_HOME}/jre -ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib -ENV PATH ${JAVA_HOME}/bin:$PATH +#ENV JAVA_HOME /usr/local/java/ +#ENV JRE_HOME ${JAVA_HOME}/jre +#ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib +#ENV PATH ${JAVA_HOME}/bin:$PATH RUN java -version && javac -version +#RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources && \ +RUN apt-get update && \ + apt-get install -y maven && \ + rm -rf /var/lib/apt/lists/* + + +COPY . /build +WORKDIR /build +RUN ls && mvn clean package -Dmaven.test.skip=true +WORKDIR /build/target +RUN mv wvp-pro-*.jar wvp.jar + + +FROM ringcentral/jdk:11 RUN mkdir -p /opt/wvp WORKDIR /opt/wvp -COPY ./wvp /opt/wvp +COPY --from=builder /build/target /opt/wvp +COPY ./docker/wvp/wvp /opt/wvp +ENTRYPOINT ["java", "-Xms512m", "-Xmx1024m", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:HeapDumpPath=/opt/ylcx/", "-jar", "wvp.jar", "--spring.config.location=/opt/ylcx/wvp/application.yml"] -WORKDIR /home -RUN cd /home && \ - git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git -RUN cd /home/wvp-GB28181-pro && \ - mvn clean package -Dmaven.test.skip=true && \ - cp /home/wvp-GB28181-pro/target/*.jar /opt/wvp/wvp.jar -WORKDIR /opt/wvp -ENTRYPOINT ["java", "-Xms512m", "-Xmx1024m", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:HeapDumpPath=/opt/ylcx/", "-jar", "wvp.jar", "--spring.config.location=/opt/ylcx/wvp/application.yml"] \ No newline at end of file +#RUN mkdir -p /opt/wvp +#WORKDIR /opt/wvp +#COPY ./wvp /opt/wvp +# +#WORKDIR /home +#RUN cd /home && \ + #git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git +# +#RUN cd /home/wvp-GB28181-pro && \ + #mvn clean package -Dmaven.test.skip=true && \ + #cp /home/wvp-GB28181-pro/target/*.jar /opt/wvp/wvp.jar +# +#WORKDIR /opt/wvp +#ENTRYPOINT ["java", "-Xms512m", "-Xmx1024m", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:HeapDumpPath=/opt/ylcx/", "-jar", "wvp.jar", "--spring.config.location=/opt/ylcx/wvp/application.yml"] \ No newline at end of file