mirror of
https://gitee.com/pan648540858/wvp-GB28181-pro.git
synced 2026-05-23 21:47:49 +08:00
增加遗漏的端口,修复文件编码问题,增加打包推送脚本,增加说明文档
This commit is contained in:
parent
752ee1c290
commit
6ae7bdc8e0
10
docker/README.md
Normal file
10
docker/README.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
可以在当前目录下:
|
||||||
|
使用`docker compose up -d`直接运行。
|
||||||
|
使用`docker compose up -d -build -force-recreate`强制重新构建所有服务的镜像并删除旧容器重新运行
|
||||||
|
|
||||||
|
`.env`用来配置环境变量,在这里配好之后,其它的配置会自动联动的。
|
||||||
|
|
||||||
|
`build.sh`用来以日期为tag构建镜像,推送到指定的容器注册表内(Windows下可以使用`Git Bash`运行)
|
||||||
|
|
||||||
|
|
||||||
|
其它的文件的作用暂不明确
|
||||||
114
docker/build.sh
114
docker/build.sh
@ -1,45 +1,79 @@
|
|||||||
#/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
|
||||||
|
|
||||||
version=2.7.3
|
# 获取当前日期作为标签(格式:YYYYMMDD)
|
||||||
|
date_tag=$(date +%Y%m%d)
|
||||||
|
|
||||||
git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git
|
# 切换到脚本所在目录的上一级目录作为工作目录
|
||||||
cd wvp-GB28181-pro/web_src && \
|
cd "$(dirname "$0")/.." || {
|
||||||
npm install && \
|
echo "错误:无法切换到上级目录"
|
||||||
npm run build
|
exit 1
|
||||||
|
}
|
||||||
|
echo "已切换工作目录到:$(pwd)"
|
||||||
|
|
||||||
|
# 检查私有仓库环境变量
|
||||||
|
if [ -z "$DOCKER_REGISTRY" ]; then
|
||||||
|
echo "未设置DOCKER_REGISTRY环境变量"
|
||||||
|
read -p "请输入私有Docker注册库地址(如不推送请留空): " input_registry
|
||||||
|
docker_registry="$input_registry"
|
||||||
|
else
|
||||||
|
docker_registry="$DOCKER_REGISTRY"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 定义要构建的镜像和对应的Dockerfile路径(相对当前工作目录)
|
||||||
|
images=(
|
||||||
|
"wvp-service:docker/wvp/Dockerfile"
|
||||||
|
"wvp-nginx:docker/nginx/Dockerfile"
|
||||||
|
)
|
||||||
|
|
||||||
|
# 构建镜像的函数
|
||||||
|
build_image() {
|
||||||
|
local image_name="$1"
|
||||||
|
local dockerfile_path="$2"
|
||||||
|
|
||||||
cd ../../
|
# 检查Dockerfile是否存在
|
||||||
mkdir -p ./nginx/dist
|
if [ ! -f "$dockerfile_path" ]; then
|
||||||
cp -r wvp-GB28181-pro/src/main/resources/static/* ./nginx/dist
|
echo "错误:未找到Dockerfile - \"$dockerfile_path\",跳过构建"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 构建镜像
|
||||||
|
local full_image_name="${image_name}:${date_tag}"
|
||||||
|
echo
|
||||||
|
echo "=============================================="
|
||||||
|
echo "开始构建镜像:${full_image_name}"
|
||||||
|
echo "Dockerfile路径:${dockerfile_path}"
|
||||||
|
|
||||||
|
docker build -t "${full_image_name}" -f "${dockerfile_path}" .
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "镜像${full_image_name}构建失败"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 推送镜像(如果设置了仓库地址)
|
||||||
|
if [ -n "$docker_registry" ]; then
|
||||||
|
local registry_image="${docker_registry}/${full_image_name}"
|
||||||
|
echo "给镜像打标签:${registry_image}"
|
||||||
|
docker tag "${full_image_name}" "${registry_image}"
|
||||||
|
|
||||||
|
echo "推送镜像到注册库"
|
||||||
|
docker push "${registry_image}"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "镜像${registry_image}推送成功"
|
||||||
|
else
|
||||||
|
echo "镜像${registry_image}推送失败"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "未提供注册库地址,不执行推送"
|
||||||
|
fi
|
||||||
|
echo "=============================================="
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
echo "构建ZLM容器"
|
# 循环构建所有镜像
|
||||||
cd ./media/
|
for item in "${images[@]}"; do
|
||||||
chmod +x ./build.sh
|
IFS=':' read -r image_name dockerfile_path <<< "$item"
|
||||||
./build.sh
|
build_image "$image_name" "$dockerfile_path"
|
||||||
cd ../
|
done
|
||||||
|
|
||||||
echo "构建数据库容器"
|
echo "所有镜像处理完成"
|
||||||
cd ./mysql/
|
exit 0
|
||||||
chmod +x ./build.sh
|
|
||||||
./build.sh
|
|
||||||
cd ../
|
|
||||||
|
|
||||||
echo "构建Redis容器"
|
|
||||||
cd ./redis/
|
|
||||||
chmod +x ./build.sh
|
|
||||||
./build.sh
|
|
||||||
cd ../
|
|
||||||
|
|
||||||
echo "构建WVP容器"
|
|
||||||
cd ./wvp/
|
|
||||||
chmod +x ./build.sh
|
|
||||||
./build.sh
|
|
||||||
cd ../
|
|
||||||
|
|
||||||
echo "构建Nginx容器"
|
|
||||||
cd ./nginx/
|
|
||||||
chmod +x ./build.sh
|
|
||||||
./build.sh
|
|
||||||
cd ../
|
|
||||||
|
|
||||||
./push.sh
|
|
||||||
|
|||||||
@ -62,8 +62,10 @@ services:
|
|||||||
#- "6080:80/tcp" # [播流]HTTP 安全考虑-非测试阶段需要注释掉,改为由nginx代理播流地址
|
#- "6080:80/tcp" # [播流]HTTP 安全考虑-非测试阶段需要注释掉,改为由nginx代理播流地址
|
||||||
#- "4443:443/tcp" # [播流]HTTPS 安全考虑-非测试阶段需要注释掉,改为由nginx代理播流地址
|
#- "4443:443/tcp" # [播流]HTTPS 安全考虑-非测试阶段需要注释掉,改为由nginx代理播流地址
|
||||||
- "${MediaRtmp:-10935}:${MediaRtmp:-10935}/tcp" # [收流]RTMP
|
- "${MediaRtmp:-10935}:${MediaRtmp:-10935}/tcp" # [收流]RTMP
|
||||||
|
- "${MediaRtmp:-10935}:${MediaRtmp:-10935}/udp" # [收流]RTMP
|
||||||
#- "41935:41935/tcp" # [收流]RTMPS 无效
|
#- "41935:41935/tcp" # [收流]RTMPS 无效
|
||||||
- "${MediaRtsp:-5540}:${MediaRtsp:-5540}/tcp" # [收流]RTSP
|
- "${MediaRtsp:-5540}:${MediaRtsp:-5540}/tcp" # [收流]RTSP
|
||||||
|
- "${MediaRtsp:-5540}:${MediaRtsp:-5540}/udp" # [收流]RTSP
|
||||||
#- "45540:45540/tcp" # [收流]RTSPS 无效
|
#- "45540:45540/tcp" # [收流]RTSPS 无效
|
||||||
- "${MediaRtp:-10000}:${MediaRtp:-10000}/tcp" # [收流]RTP
|
- "${MediaRtp:-10000}:${MediaRtp:-10000}/tcp" # [收流]RTP
|
||||||
- "${MediaRtp:-10000}:${MediaRtp:-10000}/udp" # [收流]RTP
|
- "${MediaRtp:-10000}:${MediaRtp:-10000}/udp" # [收流]RTP
|
||||||
|
|||||||
@ -21,11 +21,11 @@ server {
|
|||||||
proxy_pass http://polaris-wvp:18978;
|
proxy_pass http://polaris-wvp:18978;
|
||||||
|
|
||||||
|
|
||||||
# 从环境变量获取原始主机地址(x.x.x.x)
|
# 从环境变量获取原始主机地址(x.x.x.x)
|
||||||
set $original_host ${Stream_IP};
|
set $original_host ${Stream_IP};
|
||||||
|
|
||||||
# 执行字符串替换
|
# 执行字符串替换
|
||||||
# 将媒体资源文件替换为Nginx输出的相对地址
|
# 将媒体资源文件替换为Nginx输出的相对地址
|
||||||
sub_filter "http://$original_host/index/api/downloadFile" "mediaserver/api/downloadFile";
|
sub_filter "http://$original_host/index/api/downloadFile" "mediaserver/api/downloadFile";
|
||||||
sub_filter "http://$original_host:80/index/api/downloadFile" "mediaserver/api/downloadFile";
|
sub_filter "http://$original_host:80/index/api/downloadFile" "mediaserver/api/downloadFile";
|
||||||
sub_filter "https://$original_host/index/api/downloadFile" "mediaserver/api/downloadFile";
|
sub_filter "https://$original_host/index/api/downloadFile" "mediaserver/api/downloadFile";
|
||||||
@ -35,69 +35,69 @@ server {
|
|||||||
sub_filter "https://$original_host/mp4_record" "mp4_record";
|
sub_filter "https://$original_host/mp4_record" "mp4_record";
|
||||||
sub_filter "https://$original_host:443/mp4_record" "mp4_record";
|
sub_filter "https://$original_host:443/mp4_record" "mp4_record";
|
||||||
|
|
||||||
# 设置为off表示替换所有匹配项,而不仅仅是第一个
|
# 设置为off表示替换所有匹配项,而不仅仅是第一个
|
||||||
sub_filter_once off;
|
sub_filter_once off;
|
||||||
|
|
||||||
# 确保响应被正确处理
|
# 确保响应被正确处理
|
||||||
sub_filter_types application/json; # 只对JSON响应进行处理
|
sub_filter_types application/json; # 只对JSON响应进行处理
|
||||||
}
|
}
|
||||||
|
|
||||||
# 将mediaserver/record转发到目标地址
|
# 将mediaserver/record转发到目标地址
|
||||||
location /mediaserver/api/downloadFile {
|
location /mediaserver/api/downloadFile {
|
||||||
# 目标服务器地址
|
# 目标服务器地址
|
||||||
proxy_pass http://polaris-media:80/index/api/downloadFile;
|
proxy_pass http://polaris-media:80/index/api/downloadFile;
|
||||||
|
|
||||||
# 以下是常用的反向代理设置
|
# 以下是常用的反向代理设置
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
|
||||||
# 超时设置,根据需要调整
|
# 超时设置,根据需要调整
|
||||||
proxy_connect_timeout 300s;
|
proxy_connect_timeout 300s;
|
||||||
proxy_send_timeout 300s;
|
proxy_send_timeout 300s;
|
||||||
proxy_read_timeout 300s;
|
proxy_read_timeout 300s;
|
||||||
}
|
}
|
||||||
|
|
||||||
# 仅允许代理/rtp/开头的路径
|
# 仅允许代理/rtp/开头的路径
|
||||||
location ^~ /rtp/ {
|
location ^~ /rtp/ {
|
||||||
# 代理到ZLMediakit服务
|
# 代理到ZLMediakit服务
|
||||||
proxy_pass http://polaris-media:80;
|
proxy_pass http://polaris-media:80;
|
||||||
|
|
||||||
# 基础HTTP代理配置
|
# 基础HTTP代理配置
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
|
||||||
# WebSocket支持配置
|
# WebSocket支持配置
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
proxy_set_header Connection "upgrade";
|
proxy_set_header Connection "upgrade";
|
||||||
|
|
||||||
# 超时设置,根据实际需求调整
|
# 超时设置,根据实际需求调整
|
||||||
proxy_connect_timeout 60s;
|
proxy_connect_timeout 60s;
|
||||||
proxy_read_timeout 3600s;
|
proxy_read_timeout 3600s;
|
||||||
proxy_send_timeout 60s;
|
proxy_send_timeout 60s;
|
||||||
}
|
}
|
||||||
|
|
||||||
# 仅允许代理/rtp/开头的路径
|
# 仅允许代理/rtp/开头的路径
|
||||||
location ^~ /mp4_record/ {
|
location ^~ /mp4_record/ {
|
||||||
# 代理到ZLMediakit服务
|
# 代理到ZLMediakit服务
|
||||||
proxy_pass http://polaris-media:80;
|
proxy_pass http://polaris-media:80;
|
||||||
|
|
||||||
# 基础HTTP代理配置
|
# 基础HTTP代理配置
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
|
||||||
# WebSocket支持配置
|
# WebSocket支持配置
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
proxy_set_header Connection "upgrade";
|
proxy_set_header Connection "upgrade";
|
||||||
|
|
||||||
# 超时设置,根据实际需求调整
|
# 超时设置,根据实际需求调整
|
||||||
proxy_connect_timeout 60s;
|
proxy_connect_timeout 60s;
|
||||||
proxy_read_timeout 3600s;
|
proxy_read_timeout 3600s;
|
||||||
proxy_send_timeout 60s;
|
proxy_send_timeout 60s;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user