基于Docker-compose 部署wvp-gb28181-pro项目,并修改默认端口

部署环境:

服务器:Ubuntu20.04
网络环境:所有服务部署在同一台服务器,通过docker-compose进行管理;支持局域网和公网环境使用

引用资料:

WVP-PRO源码:https://github.com/648540858/wvp-GB28181-pro/tree/master
流媒体服务:https://github.com/ZLMediaKit/ZLMediaKit/tree/master
ZLM服务部署:https://github.com/ZLMediaKit/ZLMediaKit/wiki
WVP服务部署:https://doc.wvp-pro.cn/#/

软件版本: wvp-gb28181-pro 2.7.0 ZlmediaKit :master
我的部署文件仓库:https://github.com/eric-xdp/wvp_docker_compose

部署方式:

1、ZLM采用docker-compose方式部署
2、WVP与前端采用docker-compose前后端分离方式部署
3、Redis 与Mysql 也是单独使用docker-compose部署
可以整合成一个docker-compose文件,实现一键部署。先去把这个版本的源码下载到本地。

Redis与MySQL配置部署

具体查看GIT仓库内的配置文件。这个比较常规。就不讲了。
mysql启动后,别忘了创建一个数据库wvp, 把初始化数据sql导入进去。数据库名称要记住。后面配置wvp启动项时要连接数据库。

ZLMediaKit配置部署

端口说明:这里可以根据自己的需求修改自己想开放的端口ZLM需要开放和映射的端口

重点说明!!!!

关于40000-40500端口,是提供给RTP传输时自动分配用的,如果使用在wvp配置文件中medis.rtp.enable =false,使用单端口推流,那么无需在zlm中设置容器开放,40000-40500只需要保证服务器内有开放即可,不需要做容器映射。我这里加入到容器端口映射后发现容器启动时间明显增长。甚至有时会导致启动失败。原因暂时不太懂。

如果medis.rtp.enable = true,则表示启用多端口, 需要将对应的端口在ZLM容器启动时进行端口映射。并修改config.ini里面的端口,以及WVP配置文件中的medis.rtp.port-range:40000,45000 这一块非常重要。否则会导致收流失败!另外容器映射过多端口容易导致容器启动缓慢,甚至失败。 多端口映射根据官方描述,最少开放36个。各位请按需映射。我这里port_range=40000-40500映射了500个端口,容器启动用了将近6分钟。

注意 如果要修改ZLM服务配置,也可到这里把配置文件拷贝出来,按照docker-compose.yml文件,进行配置映射。后续修改配置则无需进入容器,但是每次修改完配置文件记得重启容器生效
config.ini配置文件位置

WVP-PRO配置部署

wvp部署就相对轻松了,可以参考官网的直接编译部署。前后端分离部署;我这里使用的是docker-compose 进行前后端分离部署。重点有几个,听我一一道来。先去下载源码,初始化SQL也在源码中

  • 重点1:编写一个适合后端和前端启用容器的docker-compose.yml文件
  • 重点2:wvp的启动配置项,在源码路径里面的src/main/resources/下的yml文件
  • 重点3:前端部署使用Nginx,其中Nginx的配置文件Nginx.conf,主要用反向代理和解决跨域

重点一, docker-compose.yml文件说明:

其中要注意的的是启动容器的网络配置,官方说明wvp需要和ZLM进行高频请求。最好在相同网络环境下,所以我将前后端都部署到和zlm容器的网络下了。其实可以和zlm的docker-compose.yml整理成一个docker-compose.yml。但是我有点懒。先不处理了。后续有时间再整理上来。

端口说明
端口说明
好了,docker-compose.yml差不多就这样了 。

重点二,启动配置项,贴配置:

讲重点配置, sip.ip,这个要设置网卡ip。什么意思呢 。就是你的wvp容器的IP,我们根据wvp的docker-compose.yml 配置的IP来填。 每个人的网络环境不一样。要自己看。

# 查看docker的网络:
docker network ls
#如果你按照我步骤来,它会给你列出这些网络,当然你环境中的ID肯定不同
NETWORK ID     NAME                  DRIVER    SCOPE
3b6083774c22   bridge                bridge    local
eb3a44606343   docker_default        bridge    local
0733faf2e065   host                  host      local
97ef6edab397   none                  null      local
481834f72027   redis_mysql_default   bridge    local
6aefff34ccb9   wvp_potier_default    bridge    local
885885a05874   zlmediakit_default    bridge    local
# 查看指定网络详情,我查看了zlmediakit_default这个网络
docker inspect 8858

查看容器网络
看到没,里面有三个容器。对应的IP都出来了 。和我们前面的配置是一毛一样的。

media.id 这个对应zlm的config.ini文件里面定义的general.mediaServerId medis.secret对应zlm的config.ini文件里面定义的api.secret medis.stream-ip sdp-ip, 如果你有公网IP,则填公网IP,没有就置空media.rtp.enable是否开启多端口。我上面有说。ZlmediaKit的重点说明部分。 其余的配置项根据自己的环境进行配置即可

重点三,前端配置

打包并放到指定路径,前端项目的源码在wvp源码中的web_src文件夹里面 。进去里面执行npm install 和 npm run build把源码打包好,打包好的文件会在源码根目录:src/main/resources/static 中。然后把static拷贝到web目录中。编写DOCKERFILE 创建部署环境这个是以nginx镜像为基础,部署VUE项目。我们还需要修改nginx.conf默认配置

DOCKERFILE内容

FROM nginx:latest
#删除目录下的default.conf文件
#RUN rm /etc/nginx/conf.d/default.conf
#设置时区
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

#将本地nginx.conf配置覆盖nginx配置
COPY nginx.conf /etc/nginx/nginx.conf
# 将vue编译好的dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面
COPY static/  /usr/share/nginx/html/
#声名端口
EXPOSE 80

RUN echo 'web project build success!!'

nginx.conf配置

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

   
    sendfile        on;
    
    keepalive_timeout  65;
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers X-Requested-With;
    add_header Access-Control-Allow-Methods GET,POST,OPTIONS;

    server {
        listen       80;
        server_name  localhost;		
        gzip on;
        gzip_min_length 1k;
        gzip_comp_level 9;
        gzip_types text/plain application/javascript application/x-javascript text/css         application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
        gzip_vary on;
        gzip_disable "MSIE [1-6]\.";


        location / {
            root   /usr/share/nginx/html;
        	  index  index.html index.htm;
        	  try_files $uri $uri/ /index.html;
        }
        
        location /debug {
            proxy_pass http://your_wvp_ip:45009;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

好了。现在回到项目根目录。 执行docker compose up .前后端就启动了。配置摄像机上线,其中SIP服务相关和密码就是wvp启动配置项中的sip.domain,sip.id,sip.password

在这里插入图片描述

登录前端: 默认账号密码是:admin/admin。 妥妥的搞定。

在这里插入图片描述

最后说明

所有的配置文件都在:github仓库内 。个人学习用。有问题也欢迎咨询。

### 如何在 Docker部署 wvp-gb28181-pro 教程和配置指南 #### 进入指定工作目录 为了开始部署过程,需要先进入到 `/mnt/wvp28181pro/wvp-GB28181-pro/docker` 目录下,这是 `docker-compose.yml` 文件所在的路径[^1]。 ```bash cd /mnt/wvp28181pro/wvp-GB28181-pro/docker ``` #### 配置环境变量 通常,在启动容器之前应该设置必要的环境变量。对于 wvp-gb28181-pro 来说,可能涉及到一些特定于应用的参数设定,比如端口号、连接字符串或者其他服务依赖项的信息。这些可以在 `.env` 文件中定义,确保该文件存在于上述提到的工作目录内。 #### 编写或修改 docker-compose.yml 文件 `docker-compose.yml` 是用来描述多个关联的服务及其运行方式的关键配置文件。针对 wvp-gb28181-pro部署,此文件应当包含有关如何拉取镜像、挂载卷以及网络配置的具体说明。下面是一个简化版的例子: ```yaml version: '3' services: gb28181-server: image: your_dockerhub_username/wvp-gb28181-pro:latest container_name: wvp_gb28181_pro_server ports: - "5060:5060" - "8080:8080" volumes: - ./data:/app/data environment: - TZ=Asia/Shanghai networks: - gb28181_network networks: gb28181_network: driver: bridge ``` 请注意,实际使用的端口映射和服务名称可能会有所不同,具体取决于项目的官方文档指导。 #### 启动 Redis 容器 如果项目依赖于 Redis 数据库,则还需要按照给定命令来创建启动名为 `redis-wvp` 的 Redis 实例,将其加入主机网络以便其他组件能够访问它[^2]: ```bash sudo docker run -d --name redis-wvp --network host -e ALLOW_EMPTY_PASSWORD=true ubuntu/redis:latest ``` 这里使用 `-d` 参数让容器以后台模式运行;而 `--network host` 则允许内部进程直接通过宿主机 IP 地址与其他外部资源通信。 #### 使用 Docker Compose 启动整个应用程序栈 完成以上准备工作之后,就可以执行如下指令一次性启动所有相关联的服务了: ```bash sudo docker-compose up -d ``` 这条命令会读取当前目录下的 `docker-compose.yml` 文件,依据其中定义的内容自动下载所需镜像、建立相应容器使它们进入运行状态。 #### 检查日志输出 最后一步是确认各个部分是否正常运作。可以通过查看日志消息来进行初步验证: ```bash sudo docker logs -f wvp_gb28181_pro_server ``` 这将实时显示来自 GB28181 server 容器的日志记录,帮助诊断可能出现的问题。
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值