WVP Ubuntu 24.04 Docker 部署记录
本文档记录在全新 Ubuntu 24.04 服务器上部署 wvp-GB28181-pro 的完整过程。
1. 服务器信息
| 项目 | 值 |
|---|---|
| 服务器 IP | 192.168.0.5 |
| SSH 端口 | 2211 |
| 系统版本 | Ubuntu 24.04 |
| 登录用户 | lee |
| 项目目录 | ~/wvp-GB28181-pro |
| Docker 编排目录 | ~/wvp-GB28181-pro/docker |
2. Java 21 环境
服务器使用 OpenJDK 21。
检查命令:
bash
echo $JAVA_HOME
java -version
当前环境:
text
JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
openjdk version "21.0.11"
建议:
- 服务器部署使用 Ubuntu 官方 OpenJDK 21 即可。
- 本项目需要 JDK 21,不建议用 JDK 8 运行。
- 本地 Mac 的
JAVA_HOME可以继续保持 JDK 8,IDEA 项目单独配置 JDK 21。
3. Docker 环境
检查 Docker:
bash
sudo docker version
sudo docker compose version
当前环境:
text
Docker Engine 29.6.1
Docker Compose v5.2.0
验证 Docker 是否可用:
bash
sudo docker run hello-world
成功标志:
text
Hello from Docker!
4. Docker 镜像源
如果直接访问 Docker Hub 超时,可以配置镜像源。
编辑 Docker 配置:
bash
sudo nano /etc/docker/daemon.json
内容:
json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1ms.run"
]
}
重启 Docker:
bash
sudo systemctl daemon-reload
sudo systemctl restart docker
检查镜像源:
bash
sudo docker info | grep -A 10 "Registry Mirrors"
正常可以看到:
text
Registry Mirrors:
https://docker.m.daocloud.io/
说明:
- 阿里云个人镜像源可能返回
403 Forbidden。 docker.m.daocloud.io当前可正常拉取hello-world。
5. 上传项目
项目需要从 Mac 上传到 Ubuntu。
注意:下面命令要在 Mac 上执行,不是在 Ubuntu 上执行。
bash
rsync -avz --progress \
--exclude target \
--exclude .idea \
--exclude .DS_Store \
-e "ssh -p 22" \
/Users/xxx/Documents/swzj/sp/wvp-GB28181-pro/ \
lee@192.168.0.5:~/wvp-GB28181-pro/
项目必须完整上传,不能只上传 docker/ 目录。
Docker 构建需要这些内容:
text
pom.xml
src/
web/
docker/
数据库/
6. Dockerfile 调整
文件位置:
text
docker/wvp/Dockerfile
6.1 替换 JDK 镜像
原镜像:
dockerfile
FROM ringcentral/jdk:21.0.9
改为:
dockerfile
FROM eclipse-temurin:21-jdk
需要同时替换 builder 阶段和运行阶段:
dockerfile
FROM eclipse-temurin:21-jdk AS builder
...
FROM eclipse-temurin:21-jdk
原因:
ringcentral/jdk:21.0.9拉取失败。eclipse-temurin:21-jdk是常用的 JDK 21 镜像,更容易通过镜像源拉取。
6.2 跳过 Git 信息生成
Docker 构建时 Maven 报错:
text
.git directory is not found
原因是 git-commit-id-maven-plugin 需要读取 .git 目录,但服务器上的项目目录可能没有 .git。
修改 Maven 构建命令:
dockerfile
RUN ls && mvn clean package -Dmaven.test.skip=true -Dmaven.gitcommitid.skip=true
这样 Docker 构建时会跳过 Git 信息生成。
项目代码允许 git.properties 不存在,所以不会影响程序启动。
同步修改后的 Dockerfile:
bash
rsync -avz -e "ssh -p 22" \
/Users/xxx/Documents/swzj/sp/wvp-GB28181-pro/docker/wvp/Dockerfile \
lee@192.168.0.5:~/wvp-GB28181-pro/docker/wvp/Dockerfile
7. 配置服务器 IP
进入 Docker 目录:
bash
cd ~/wvp-GB28181-pro/docker
检查 .env:
bash
cat .env
需要确认以下配置使用服务器 IP:
env
Stream_IP=192.168.0.5
SDP_IP=192.168.0.5
SIP_ShowIP=192.168.0.5
这些配置会影响流媒体、SIP 信令和设备访问。
8. 构建和启动
进入 Docker 编排目录:
bash
cd ~/wvp-GB28181-pro/docker
重新构建 WVP:
bash
sudo docker compose build --no-cache polaris-wvp
启动全部服务:
bash
sudo docker compose up -d
查看服务状态:
bash
sudo docker compose ps
查看 WVP 日志:
bash
sudo docker compose logs -f polaris-wvp
只看最近日志:
bash
sudo docker compose logs --tail=200 polaris-wvp
9. 服务组成
当前 Docker 部署包含:
| 服务 | 作用 |
|---|---|
polaris-nginx |
入口代理 |
polaris-wvp |
WVP 主服务 |
polaris-media |
流媒体服务,通常是 ZLMediaKit |
polaris-redis |
缓存 |
polaris-mysql |
数据库 |
整体关系:
text
客户端 / 浏览器
|
nginx
|
wvp
/ | \
mysql redis media
10. 常用维护命令
进入目录:
bash
cd ~/wvp-GB28181-pro/docker
启动:
bash
sudo docker compose up -d
停止:
bash
sudo docker compose down
重启 WVP:
bash
sudo docker compose restart polaris-wvp
重新构建并启动 WVP:
bash
sudo docker compose build --no-cache polaris-wvp
sudo docker compose up -d polaris-wvp
查看所有容器:
bash
sudo docker ps
查看 compose 状态:
bash
sudo docker compose ps
查看日志:
bash
sudo docker compose logs -f
11. 已解决的问题
11.1 Docker Hub 拉取超时
现象:
text
dial tcp ... i/o timeout
处理:
- 配置 Docker 镜像源。
- 使用
docker.m.daocloud.io。
11.2 阿里云镜像源 403
现象:
text
403 Forbidden
处理:
- 不继续使用该阿里云个人镜像源。
- 改用 DaoCloud 镜像源。
11.3 项目目录不完整
现象:
text
COPY ./web /build failed
原因:
- 只上传了
docker/,没有上传完整项目。
处理:
- 使用
rsync上传完整项目目录。
11.4 JDK 镜像拉取失败
现象:
text
ringcentral/jdk:21.0.9
拉取失败。
处理:
- 替换为
eclipse-temurin:21-jdk。
11.5 Maven 找不到 .git
现象:
text
Failed to execute goal io.github.git-commit-id:git-commit-id-maven-plugin
.git directory is not found
处理:
dockerfile
RUN ls && mvn clean package -Dmaven.test.skip=true -Dmaven.gitcommitid.skip=true
12. 部署完成后的检查项
执行:
bash
cd ~/wvp-GB28181-pro/docker
sudo docker compose ps
确认各服务状态为 Up。
继续查看 WVP 日志:
bash
sudo docker compose logs -f polaris-wvp
重点关注:
- Spring Boot 是否启动成功。
- MySQL 是否连接成功。
- Redis 是否连接成功。
- Media/ZLM 是否连接成功。
- Web 页面是否可以访问。
- SIP 端口是否正常监听。
13. 备注
docker-compose.yml 中如果出现类似警告:
text
the attribute `version` is obsolete
可以暂时忽略,不影响服务运行。