一个可行的docker部署方案
This commit is contained in:
@@ -1,81 +1,64 @@
|
||||
FROM ubuntu:20.04 as build
|
||||
FROM ubuntu:20.04 AS build
|
||||
ARG Platfrom=amd64
|
||||
ARG JDK_NAME
|
||||
|
||||
ARG gitUrl="https://gitee.com/pan648540858"
|
||||
ARG zlmGitUrl="https://gitee.com/xia-chu/ZLMediaKit"
|
||||
EXPOSE 18978/tcp
|
||||
EXPOSE 8116/tcp
|
||||
EXPOSE 8116/udp
|
||||
EXPOSE 8080/tcp
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive &&\
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends openjdk-11-jre git maven nodejs npm build-essential \
|
||||
cmake ca-certificates openssl ffmpeg &&\
|
||||
mkdir -p /opt/wvp/config /opt/wvp/heapdump /opt/wvp/config /opt/assist/config /opt/assist/heapdump /opt/media/www/record
|
||||
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 cd /home && \
|
||||
git clone "${gitUrl}/maven.git" && \
|
||||
cp maven/settings.xml /usr/share/maven/conf/
|
||||
# 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
|
||||
|
||||
RUN cd /home && \
|
||||
git clone "${gitUrl}/wvp-GB28181-pro.git"
|
||||
RUN cd /home/wvp-GB28181-pro/web_src && \
|
||||
npm install && \
|
||||
npm run build
|
||||
RUN cd /home/wvp-GB28181-pro && \
|
||||
mvn clean package -Dmaven.test.skip=true && \
|
||||
cp /home/wvp-GB28181-pro/target/*.jar /opt/wvp/ && \
|
||||
cp /home/wvp-GB28181-pro/src/main/resources/application-docker.yml /opt/wvp/config/application.yml
|
||||
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 cd /home && \
|
||||
git clone "${gitUrl}/wvp-pro-assist.git"
|
||||
RUN cd /home/wvp-pro-assist && \
|
||||
git reset --hard 58f1a79136a55a7cd1593c95b56ddadcc2225b61 && \
|
||||
mvn clean package -Dmaven.test.skip=true && \
|
||||
cp /home/wvp-pro-assist/target/*.jar /opt/assist/ && \
|
||||
cp /home/wvp-pro-assist/src/main/resources/application-dev.yml /opt/assist/config/application.yml
|
||||
RUN java -version && javac -version
|
||||
|
||||
RUN cd /home && \
|
||||
git clone --depth=1 "${zlmGitUrl}"
|
||||
RUN cd /home/ZLMediaKit && \
|
||||
git submodule update --init --recursive && \
|
||||
mkdir -p build release/linux/Release/ &&\
|
||||
cd build && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Release .. && \
|
||||
make -j4 && \
|
||||
rm -rf ../release/linux/Release/config.ini && \
|
||||
cp -r ../release/linux/Release/* /opt/media
|
||||
|
||||
RUN cd /opt/wvp && \
|
||||
echo '#!/bin/bash' > run.sh && \
|
||||
echo 'echo ${WVP_IP}' >> run.sh && \
|
||||
echo 'echo ${WVP_CONFIG}' >> run.sh && \
|
||||
echo 'cd /opt/assist' >> run.sh && \
|
||||
echo 'nohup java ${ASSIST_JVM_CONFIG} -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/assist/heapdump/ -jar *.jar --spring.config.location=/opt/assist/config/application.yml --userSettings.record=/opt/media/www/record/ --media.record-assist-port=18081 ${ASSIST_CONFIG} &' >> run.sh && \
|
||||
echo 'nohup /opt/media/MediaServer -d -m 3 &' >> run.sh && \
|
||||
echo 'cd /opt/wvp' >> run.sh && \
|
||||
echo 'java ${WVP_JVM_CONFIG} -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/wvp/heapdump/ -jar *.jar --spring.config.location=/opt/wvp/config/application.yml --media.record-assist-port=18081 ${WVP_CONFIG}' >> run.sh && \
|
||||
chmod +x run.sh
|
||||
|
||||
FROM ubuntu:20.04
|
||||
|
||||
EXPOSE 18080/tcp
|
||||
EXPOSE 5060/tcp
|
||||
EXPOSE 5060/udp
|
||||
EXPOSE 6379/tcp
|
||||
EXPOSE 18081/tcp
|
||||
EXPOSE 80/tcp
|
||||
EXPOSE 1935/tcp
|
||||
EXPOSE 554/tcp
|
||||
EXPOSE 554/udp
|
||||
EXPOSE 30000-30500/tcp
|
||||
EXPOSE 30000-30500/udp
|
||||
|
||||
ENV LC_ALL zh_CN.UTF-8
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive &&\
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends openjdk-11-jre ca-certificates ffmpeg language-pack-zh-hans && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get clean -y && \
|
||||
rm -rf /var/lib/apt/lists/*dic
|
||||
|
||||
COPY --from=build /opt /opt
|
||||
RUN mkdir -p /opt/wvp
|
||||
WORKDIR /opt/wvp
|
||||
CMD ["sh", "run.sh"]
|
||||
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"]
|
||||
8
docker/wvp/build.sh
Executable file
8
docker/wvp/build.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
#/bin/bash
|
||||
set -e
|
||||
|
||||
version=2.7.3
|
||||
|
||||
docker build -t polaris-wvp:${version} .
|
||||
docker tag polaris-wvp:${version} polaris-tian-docker.pkg.coding.net/qt/polaris/polaris-wvp:${version}
|
||||
docker tag polaris-wvp:${version} polaris-tian-docker.pkg.coding.net/qt/polaris/polaris-wvp:latest
|
||||
105
docker/wvp/wvp/application-base.yml
Executable file
105
docker/wvp/wvp/application-base.yml
Executable file
@@ -0,0 +1,105 @@
|
||||
spring:
|
||||
# 设置接口超时时间
|
||||
mvc:
|
||||
async:
|
||||
request-timeout: 20000
|
||||
thymeleaf:
|
||||
cache: false
|
||||
# [可选]上传文件大小限制
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 10MB
|
||||
max-request-size: 100MB
|
||||
# REDIS数据库配置
|
||||
redis:
|
||||
# [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
|
||||
host: 127.0.0.1
|
||||
# [必须修改] 端口号
|
||||
port: 6379
|
||||
# [可选] 数据库 DB
|
||||
database: 1
|
||||
# [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接
|
||||
password:
|
||||
# [可选] 超时时间
|
||||
timeout: 30000
|
||||
# mysql数据源
|
||||
datasource:
|
||||
dynamic:
|
||||
type: com.zaxxer.hikari.HikariDataSource
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true
|
||||
username: root
|
||||
password: root
|
||||
#[可选] 监听的HTTP端口, 网页和接口调用都是这个端口
|
||||
server:
|
||||
port: 18978
|
||||
ssl:
|
||||
# [可选] 是否开启HTTPS访问
|
||||
enabled: false
|
||||
# 作为28181服务器的配置
|
||||
sip:
|
||||
# [必须修改] 本机的IP
|
||||
ip: 127.0.0.1
|
||||
# [可选]
|
||||
port: 8116
|
||||
# [可选]
|
||||
domain: 3402000000
|
||||
# [可选]
|
||||
id: 34020000002000000001
|
||||
password:
|
||||
alarm: true
|
||||
|
||||
# 默认服务器配置
|
||||
media:
|
||||
id: polaris
|
||||
# [必须修改]内网IP
|
||||
ip: 127.0.0.1
|
||||
http-port: 6080
|
||||
# [可选] 返回流地址时的ip,置空使用 media.ip
|
||||
stream-ip: 127.0.0.1
|
||||
# [可选] wvp在国标信令中使用的ip,此ip为摄像机可以访问到的ip, 置空使用 media.ip
|
||||
sdp-ip: 127.0.0.1
|
||||
# [可选] Hook IP, 默认使用sip.ip
|
||||
hook-ip: 127.0.0.1
|
||||
# [可选] sslport
|
||||
http-ssl-port: 4443
|
||||
rtp-proxy-port: 10000
|
||||
rtmp-port: 10935
|
||||
rtmp-ssl-port: 41935
|
||||
rtsp-port: 5540
|
||||
rtsp-ssl-port: 45540
|
||||
# [可选]
|
||||
secret: su6TiedN2rVAmBbIDX0aa0QTiBJLBdcf
|
||||
# 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试
|
||||
rtp:
|
||||
# [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输
|
||||
enable: false
|
||||
# [可选]
|
||||
port-range: 30000,30500
|
||||
# [可选]
|
||||
send-port-range: 50502,50506
|
||||
|
||||
record-path: /opt/media/record
|
||||
record-day: 7
|
||||
record-assist-port: 0
|
||||
user-settings:
|
||||
auto-apply-play: true
|
||||
play-timeout: 30000
|
||||
wait-track: false
|
||||
record-push-live: false
|
||||
record-sip: false
|
||||
stream-on-demand: true
|
||||
interface-authentication: false
|
||||
broadcast-for-platform: TCP-PASSIVE
|
||||
push-stream-after-ack: true
|
||||
send-to-platforms-when-id-lost: true
|
||||
interface-authentication-excludes:
|
||||
- /api/**
|
||||
push-authority: false
|
||||
allowed-origins:
|
||||
- http://localhost:8080
|
||||
- http://127.0.0.1:8080
|
||||
- http://0.0.0.0:8080
|
||||
logging:
|
||||
config: classpath:logback-spring.xml
|
||||
|
||||
106
docker/wvp/wvp/application-docker.yml
Normal file
106
docker/wvp/wvp/application-docker.yml
Normal file
@@ -0,0 +1,106 @@
|
||||
spring:
|
||||
# 设置接口超时时间
|
||||
mvc:
|
||||
async:
|
||||
request-timeout: 20000
|
||||
thymeleaf:
|
||||
cache: false
|
||||
# [可选]上传文件大小限制
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 10MB
|
||||
max-request-size: 100MB
|
||||
# REDIS数据库配置
|
||||
redis:
|
||||
# [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
|
||||
host: ${REDIS_HOST:127.0.0.1}
|
||||
# [必须修改] 端口号
|
||||
port: ${REDIS_PORT:6379}
|
||||
# [可选] 数据库 DB
|
||||
database: 1
|
||||
# [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接
|
||||
password:
|
||||
# [可选] 超时时间
|
||||
timeout: 30000
|
||||
# mysql数据源
|
||||
datasource:
|
||||
type: com.zaxxer.hikari.HikariDataSource
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://${DATABASE_HOST:127.0.0.1}:${DATABASE_PORT:3306}/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true
|
||||
username: ${DATABASE_USER:root}
|
||||
password: ${DATABASE_PASSWORD:root}
|
||||
|
||||
#[可选] 监听的HTTP端口, 网页和接口调用都是这个端口
|
||||
server:
|
||||
port: 18978
|
||||
ssl:
|
||||
# [可选] 是否开启HTTPS访问
|
||||
enabled: false
|
||||
# 作为28181服务器的配置
|
||||
sip:
|
||||
# [必须修改] 本机的IP
|
||||
ip: ${SIP_HOST:127.0.0.1}
|
||||
# [可选]
|
||||
port: 8116
|
||||
# [可选]
|
||||
domain: 3402000000
|
||||
# [可选]
|
||||
id: 34020000002000000001
|
||||
password:
|
||||
alarm: true
|
||||
|
||||
# 默认服务器配置
|
||||
media:
|
||||
id: polaris
|
||||
# [必须修改] ZLM 内网IP与端口
|
||||
ip: ${ZLM_HOST:127.0.0.1}
|
||||
http-port: ${ZLM_PORT:6080}
|
||||
# [可选] 返回流地址时的ip,置空使用 media.ip
|
||||
stream-ip: ${STREAM_HOST:127.0.0.1}
|
||||
# [可选] wvp在国标信令中使用的ip,此ip为摄像机可以访问到的ip, 置空使用 media.ip
|
||||
sdp-ip: ${SIP_HOST:127.0.0.1}
|
||||
# [可选] Hook IP, 默认使用sip.ip
|
||||
hook-ip: ${SIP_HOST:127.0.0.1}
|
||||
# [可选] sslport
|
||||
http-ssl-port: 4443
|
||||
rtp-proxy-port: 10000
|
||||
rtmp-port: 10935
|
||||
rtmp-ssl-port: 41935
|
||||
rtsp-port: 5540
|
||||
rtsp-ssl-port: 45540
|
||||
# [可选]
|
||||
secret: ${ZLM_SERCERT}
|
||||
# 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试
|
||||
rtp:
|
||||
# [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输
|
||||
enable: false
|
||||
# [可选]
|
||||
port-range: 30000,30500
|
||||
# [可选]
|
||||
send-port-range: 50502,50506
|
||||
|
||||
record-path: /opt/media/record
|
||||
record-day: 7
|
||||
record-assist-port: 0
|
||||
user-settings:
|
||||
auto-apply-play: true
|
||||
play-timeout: 30000
|
||||
wait-track: false
|
||||
record-push-live: false
|
||||
record-sip: false
|
||||
stream-on-demand: true
|
||||
interface-authentication: false
|
||||
broadcast-for-platform: TCP-PASSIVE
|
||||
push-stream-after-ack: true
|
||||
send-to-platforms-when-id-lost: true
|
||||
interface-authentication-excludes:
|
||||
- /api/**
|
||||
push-authority: false
|
||||
allowed-origins:
|
||||
- http://localhost:8080
|
||||
- http://127.0.0.1:8080
|
||||
- http://0.0.0.0:8080
|
||||
- ${NGINX_HOST}
|
||||
logging:
|
||||
config: classpath:logback-spring.xml
|
||||
|
||||
5
docker/wvp/wvp/application.yml
Executable file
5
docker/wvp/wvp/application.yml
Executable file
@@ -0,0 +1,5 @@
|
||||
spring:
|
||||
application:
|
||||
name: wvp
|
||||
profiles:
|
||||
active: docker
|
||||
Reference in New Issue
Block a user