docker安装视频平台wvp-pro教程

前言

安装环境:ubuntu22.04

Docker下安装ZLMediaKit教程地址:docker安装ZLMediaKit教程

ZLMediaKit容器中安装Open JDK 11教程:ZLMediakit 容器中安装open jdk 11

ZLMediakit容器中部署wvp辅助录像程序教程:ZLMediaKit容器中部署wvp-pro-assist

1. 本地新建docker-compose.yml

推荐使用vscode来编辑yml文件!!!

首先安装redis和mysql服务

version: '3'

services:
#wvp redis服务
redis:
image: redis
container_name: wvp_redis
privileged: true
restart: always
ports:
- "16379:6379"
volumes:
- /home/wvp/redis/redis.conf:/etc/redis/redis_default.conf
- /home/wvp/redis/data:/data
- /home/wvp/redis/logs:/logs
environment:
TZ: "Asia/Shanghai"
command: redis-server /etc/redis/redis_default.conf
#wvp 单独mysql服务
mysql:
container_name: wvp_mysql
image: mysql:5.7.34
restart: always
ports:
- "13306:3306"
volumes:
- /home/wvp/mysql/data:/var/lib/mysql
- /home/wvp/mysql/conf/my.cnf:/etc/my.cnf
- /home/wvp/mysql/logs:/var/log/mysql
environment:
MYSQL_DATABASE: wvp
MYSQL_ROOT_PASSWORD: root123
TZ: Asia/Shanghai

redis服务中:

  1. 端口6379映射到了宿主机16379
  2. volumes中将redis的conf配置文件,data数据文件以及logs日志文件映射到了宿主机对应的目录下

mysql服务中:

  1. 端口3306映射到了宿主机13306端口,后续用Navicat连接此数据库初始化wvp需要的数据表
  2. volumes中将log日志文件和配置文件my.cnf以及data文件都挂载到了宿主机
  3. environment中设置了database为wvp并且设置了mysql root密码为root123

2. 创建mysql配置文件my.cnf

# 创建文件
mkdir -p /home/wvp/mysql/conf/
# 创建配置文件
vim /home/wvp/mysql/conf/my.cnf

复制下面的内容到配置文件中

[mysqld]
lower_case_table_names=1
user=mysql
default-storage-engine=INNODB
character-set-server=utf8mb4
character-set-client-handshake=FALSE
collation-server=utf8mb4_general_ci
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

3. 将docker-compose文件上传到服务器

# 新建存放docker-compose文件的目录
mkdir -p /opt/docker/wvp
# 进入该目录
cd /opt/docker/wvp
# 上传文件
rz
# 查看是否上传成功
ls

4. 安装mysql和redis

# 进入安装目录
cd /opt/docker/wvp
# 执行docker-compose命令
docker-compose up -d
# 安装完成后,执行下面命令查看日志文件
docker-compose logs -f

5. 验证是否安装成功

docker ps -a

输出如下则安装成功

安装成功输出

6. 使用Navicat连接数据库

连接mysql示例

连接成功后,找到wvp数据库,然后导入wvp-pro的sql文件。SQL文件地址:点击查看

7. 修改wvp pro的配置文件application-dev.yml

完整的application-dev.yml配置文件地址:点击查看

 # 数据库需要修改端口号,IP为宿主机IP,端口号为13306,因为在docker中映射出来的是13306端口
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.182.131:13306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false
username: root
password: root123
# redis部分需要修改docker-compose中映射后的端口16379
redis:
# 修改为宿主机IP地址
host: 192.168.182.131
# 端口号,映射到的宿主机端口号
port: 16379
#zlm 默认服务器配置
media:
# 配置ZLMediaKit id号,如果配置不成功,手动去修改ZLMediakit config.ini
id: vm-ubutun
# [必须修改] zlm服务器的内网IP,这里修改为宿主机IP
ip: 192.168.182.131
# [可选] 返回流地址时的ip,置空使用 media.ip, 如果要映射到公网,这里填公网IP
stream-ip: 112.25.253.x
# 若果要映射到公网,这里填写公网IP
sdp-ip: 112.25.253.x
# [必须修改] zlm服务器的http.port
# 填写zlm docker映射后的端口号,公网部署此端口号需要在路由器做端口映射,不能改变为其他值
http-port: 89
# [可选] zlm服务器的hook.admin_params=secret
secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
# 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试
rtp:
# [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输
enable: true
# [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性,不然自动配置此属性可能不成功
# 公网部署此端口号需要在路由器端做端口范围映射
port-range: 30000,30500 # 端口范围
# [可选] 国标级联在此范围内选择端口发送媒体流,
send-port-range: 30000,30500 # 端口范围
# 录像辅助服务, 部署此服务可以实现zlm录像的管理与下载, 0 表示不使用
record-assist-port: 18081

8. 上传wvp-pro的jar包和配置文件

可执行Jar包下载地址:点击下载

# 创建一个目录用于存放jar包和配置文件
mkdir -p /home/wvp/wvpsoft
# 进入该目录
cd /home/wvp/wvpsoft
# 上传jar和配置文件
rz
# 查看是否上传成功
ls

9. 继续编写docker-compose.yml文件

编写完成后整个配置文件如下

version: '3'

services:
#wvp redis服务
redis:
image: redis
container_name: wvp_redis
privileged: true
restart: always
ports:
- "16379:6379"
volumes:
- /home/wvp/redis/redis.conf:/etc/redis/redis_default.conf
- /home/wvp/redis/data:/data
- /home/wvp/redis/logs:/logs
environment:
TZ: "Asia/Shanghai"
command: redis-server /etc/redis/redis_default.conf
#wvp 单独mysql服务
mysql:
container_name: wvp_mysql
image: mysql:5.7.34
restart: always
ports:
- "13306:3306"
volumes:
- /home/wvp/mysql/data:/var/lib/mysql
- /home/wvp/mysql/conf/my.cnf:/etc/my.cnf
- /home/wvp/mysql/logs:/var/log/mysql
environment:
MYSQL_DATABASE: wvp
MYSQL_ROOT_PASSWORD: root123
TZ: Asia/Shanghai
#wvp-28181服务
wvp-pro:
container_name: wvp_pro
image: java:8
privileged: true
restart: always
environment:
TZ: Asia/Shanghai
ports:
#sip通信端口tcp
- "5060:5060"
#sip通信端口udp
- "5060:5060/udp"
#wvp api端口
- "18080:18080"
volumes:
#挂载jar文件
- /home/wvp/wvpsoft/wvp.jar:/usr/local/wvp/wvp.jar
#挂载配置文件
- /home/wvp/wvpsoft/application-dev.yml:/usr/local/wvp/application.yml
- /home/wvp/wvpsoft/logs:/usr/local/wvp/logs
#指定docker工作目录
#working_dir: /usr/local/wvp
#启动容器后执行的命令
command:
[
"java",
"-jar",
"-Xmx512m",
"-Xms256m",
"-XX:+HeapDumpOnOutOfMemoryError",
"-XX:HeapDumpPath=/usr/local/wvp/heapdump/",
"-Djava.security.egd=file:/dev/./urandom",
"/usr/local/wvp/wvp.jar",
"--spring.config.location=/usr/local/wvp/application.yml"
]

这里把jar文件和配置文件直接挂载到了容器,最后再command中调整jvm参数,启动wvp-pro,最后可以通过下面命令查看wvp_pro的日志

docker logs -f wvp_pro

如果要查看其它容器的日志把 wvp_pro替换为其它容器的名称即可。

结束语

这里部署了三个容器分别是redis和mysql以及wvp_pro,但是没有部署前端UI,因为前端UI我单独部署的。后续会出相应的部署教程,敬请期待…