stream-deploy/reademe/polaris-wvp.md

88 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

polaris-wvp 构建流程详解
这是一个多阶段构建Multi-stage Build的 Dockerfile分为两个阶段
第一阶段Builder构建阶段
基础镜像
FROM ringcentral/jdk:11 AS builder
使用 ringcentral/jdk:11 作为构建基础镜像
命名为 builder 阶段,供后续引用
端口声明
EXPOSE 18978/tcp # WVP Web 管理端口
EXPOSE 8116/tcp # SIP 信令端口TCP
EXPOSE 8116/udp # SIP 信令端口UDP
EXPOSE 8080/tcp # HTTP 端口
安装 Maven
RUN apt-get update && \
apt-get install -y maven && \
rm -rf /var/lib/apt/lists/*
更新软件包列表
安装 Maven 构建工具
清理缓存减小镜像体积
编译 Java 项目
COPY . /build # 复制整个项目到 /build
WORKDIR /build # 切换工作目录
RUN ls && mvn clean package -Dmaven.test.skip=true # Maven 打包,跳过测试
WORKDIR /build/target # 进入 target 目录
RUN mv wvp-pro-*.jar wvp.jar # 重命名 jar 包
关键点:
COPY . /build 会复制 docker-compose.yml 中 context: .. 指定的整个项目根目录
-Dmaven.test.skip=true 跳过单元测试,加快构建速度
将生成的 wvp-pro-*.jar 统一重命名为 wvp.jar
第二阶段Runtime运行阶段
基础镜像
FROM ringcentral/jdk:11
重新使用干净的 JDK 11 镜像
不包含 Maven 等构建工具,镜像更小
准备运行环境
RUN mkdir -p /opt/wvp # 创建应用目录
WORKDIR /opt/wvp # 设置工作目录
COPY --from=builder /build/target /opt/wvp # 从 builder 阶段复制编译产物
COPY ./docker/wvp/wvp /opt/wvp # 复制配置文件
关键点:
--from=builder 从第一阶段复制文件,实现多阶段构建
复制 ./docker/wvp/wvp 目录(包含配置文件)
启动命令
ENTRYPOINT ["java", "-Xms512m", # 初始堆内存 512MB
"-Xmx1024m", # 最大堆内存 1GB
"-XX:+HeapDumpOnOutOfMemoryError", # OOM 时生成堆转储
"-XX:HeapDumpPath=/opt/ylcx/", # 堆转储文件路径
"-jar", "wvp.jar", # 运行 jar 包
"--spring.config.location=/opt/ylcx/wvp/application.yml" # 指定配置文件
]
JVM 参数说明:
-Xms512m / -Xmx1024m适合中小型部署
HeapDumpOnOutOfMemoryError便于排查内存问题
Spring Boot 配置文件路径:/opt/ylcx/wvp/application.yml
构建上下文
在 docker-compose.yml:84-86 中:
build:
context: .. # 项目根目录
dockerfile: ./docker/wvp/Dockerfile # Dockerfile 路径
目录结构:
stream-deploy/ ← context 根目录
├── src/ ← Java 源码
├── pom.xml ← Maven 配置
├── docker/
│ ├── docker-compose.yml
│ └── wvp/
│ ├── Dockerfile ← 当前文件
│ └── wvp/ ← 配置文件目录
│ └── application.yml
└── ...
多阶段构建的优势
镜像体积小:最终镜像不包含 Maven、源码等构建工具
安全性高:运行环境不包含编译工具链
构建效率:利用 Docker 缓存层加速重复构建
配置文件挂载
在 docker-compose.yml 中:
volumes:
- ./wvp/wvp/:/opt/ylcx/wvp/ # 挂载配置文件
- ./logs/wvp:/opt/wvp/logs/ # 挂载日志目录
实际配置文件路径:./docker/wvp/wvp/application.yml
注释掉的旧方案
第 71-84 行的注释代码是旧的构建方案:
从 Gitee 克隆 WVP-GB28181-pro 源码
在容器内编译
现在改为在宿主机或 builder 阶段编译,更高效