WVP Ubuntu 24.04 Docker 部署记录

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

可以暂时忽略,不影响服务运行。