378 lines
12 KiB
Markdown
378 lines
12 KiB
Markdown
默认用户名 admin 密码 admin
|
||
|
||
重点:
|
||
1: docker-compose.yaml polaris-media 下的 WebRTC 配置需要和 media/config.ini中的rtc的端口对应上
|
||
2: application.yaml 下的 media.http-port 需要和 media/config.ini中的http.port端口对应上
|
||
3: 部署新服务器的时候,建议先 全局替换114.67.89.4 IP地址,之后再个性化配置
|
||
4: 本机使用的时候使用.env_local替换.env中的内容
|
||
|
||
|
||
mac 本地构建过程:
|
||
1: wvp 源码构建
|
||
在 docker/wvp 目录下执行 ./build.sh (build 中默认 latest)
|
||
|
||
1.2 nginx 源码构建
|
||
在 docker/nginx 目录下执行 ./build.sh (build 中默认 latest)
|
||
|
||
1.2 ZLM 源码
|
||
在 docker/media 目录下执行 ./build.sh (build 中默认 latest)
|
||
|
||
2: 部署
|
||
2.1 cd到docker目录
|
||
2.2 修改docker-compose.yaml中使用wvp镜像的版本号 (默认latest)
|
||
2.3 修改docker-compose.yaml中使用nginx镜像的版本号 (默认latest)
|
||
2.4 修改docker-compose.yaml中使用media镜像的版本号 (默认latest)
|
||
2.5 执行docker compose up -d
|
||
|
||
mac 发布流程
|
||
1 构建并推送镜像
|
||
1.1 cd到 docker/wvp目录下
|
||
1.2 修改build-and-push-wvp中的版本号 (build 中默认 latest)
|
||
1.2 执行 ./build-and-push-wvp.sh
|
||
|
||
1 构建并推送镜像
|
||
1.1 cd到 docker/nginx目录下
|
||
1.2 修改build-and-push-nginx中的版本号 (build 中默认 latest)
|
||
1.2 执行 ./build-and-push-nginx.sh
|
||
|
||
1 构建并推送镜像
|
||
1.1 cd到 docker/media目录下
|
||
1.2 修改build-and-push-media中的版本号 (build 中默认 latest)
|
||
1.2 执行 ./build-and-push-media.sh
|
||
|
||
2 部署
|
||
2.1 将docker目录全部拷贝到需要部署到服务器
|
||
2.2 修改docker-compose.yaml中使用 wvp nginx media镜像的版本号 (build 中默认 latest)
|
||
2.3 在.env中添加REGISTRY=registry.t-aaron.com/
|
||
2.4 修改.env中其他的环境变量值
|
||
2.5 执行docker compose up -d
|
||
|
||
|
||
~~~~~~~~~~~以下内容忽略~~~~~~~~~
|
||
|
||
步骤1:准备 buildx 环境
|
||
# 创建并启用 multiarch builder
|
||
docker buildx create --name multiarch --use
|
||
|
||
# 验证 builder
|
||
docker buildx inspect --bootstrap
|
||
步骤2:登录私有仓库
|
||
# 登录你的私有仓库
|
||
docker login registry.t-aaron.com
|
||
步骤3:推送第三方镜像到私有仓库
|
||
|
||
|
||
# ===== ubuntu:20.04 =====
|
||
# 备份本地 arm64 镜像
|
||
docker tag ubuntu:20.04 ubuntu:20.04-backup
|
||
|
||
# 拉取 amd64 版本
|
||
docker pull --platform linux/amd64 ubuntu:20.04
|
||
|
||
# 推送到私有仓库
|
||
docker tag ubuntu:20.04 registry.t-aaron.com/ubuntu:20.04
|
||
docker push registry.t-aaron.com/ubuntu:20.04
|
||
|
||
# 恢复本地 arm64 版本
|
||
docker rmi ubuntu:20.04
|
||
docker tag ubuntu:20.04-backup ubuntu:20.04
|
||
docker rmi ubuntu:20.04-backup
|
||
|
||
|
||
# ===== ubuntu:24.04 =====
|
||
# 备份本地 arm64 镜像
|
||
docker tag ubuntu:24.04 ubuntu:24.04-backup
|
||
|
||
# 拉取 amd64 版本
|
||
docker pull --platform linux/amd64 ubuntu:24.04
|
||
|
||
# 推送到私有仓库
|
||
docker tag ubuntu:24.04 registry.t-aaron.com/ubuntu:24.04
|
||
docker push registry.t-aaron.com/ubuntu:24.04
|
||
|
||
# 恢复本地 arm64 版本
|
||
docker rmi ubuntu:24.04
|
||
docker tag ubuntu:24.04-backup ubuntu:24.04
|
||
docker rmi ubuntu:24.04-backup
|
||
|
||
# ===== Redis =====
|
||
# 备份本地 arm64 镜像
|
||
docker tag nginx:alpine nginx:alpine-backup
|
||
|
||
# 拉取 amd64 版本
|
||
docker pull --platform linux/amd64 nginx:alpine
|
||
|
||
# 推送到私有仓库
|
||
docker tag nginx:alpine registry.t-aaron.com/nginx:alpine
|
||
docker push registry.t-aaron.com/nginx:alpine
|
||
|
||
# 恢复本地 arm64 版本
|
||
docker rmi nginx:alpine
|
||
docker tag nginx:alpine-backup nginx:alpine
|
||
docker rmi nginx:alpine-backup
|
||
|
||
# ===== Redis =====
|
||
# 备份本地 arm64 镜像
|
||
docker tag redis:latest redis:latest-arm64-backup
|
||
|
||
# 拉取 amd64 版本
|
||
docker pull --platform linux/amd64 redis:latest
|
||
|
||
# 推送到私有仓库
|
||
docker tag redis:latest registry.t-aaron.com/redis:latest
|
||
docker push registry.t-aaron.com/redis:latest
|
||
|
||
# 恢复本地 arm64 版本
|
||
docker rmi redis:latest
|
||
docker tag redis:latest-arm64-backup redis:latest
|
||
docker rmi redis:latest-arm64-backup
|
||
|
||
# ===== MySQL =====
|
||
# 备份本地 arm64 镜像
|
||
docker tag mysql:8 mysql:8-arm64-backup
|
||
|
||
# 拉取 amd64 版本
|
||
docker pull --platform linux/amd64 mysql:8
|
||
|
||
# 推送到私有仓库
|
||
docker tag mysql:8 registry.t-aaron.com/mysql:8
|
||
docker push registry.t-aaron.com/mysql:8
|
||
|
||
# 恢复本地 arm64 版本
|
||
docker rmi mysql:8
|
||
docker tag mysql:8-arm64-backup mysql:8
|
||
docker rmi mysql:8-arm64-backup
|
||
|
||
# ===== eclipse-temurin:17-jdk =====
|
||
# 备份本地 arm64 镜像
|
||
docker tag eclipse-temurin:17-jdk eclipse-temurin:17-jdk-arm64-backup
|
||
|
||
# 拉取 amd64 版本
|
||
docker pull --platform linux/amd64 eclipse-temurin:17-jdk
|
||
|
||
# 推送到私有仓库
|
||
docker tag eclipse-temurin:17-jdk registry.t-aaron.com/eclipse-temurin:17-jdk
|
||
docker push registry.t-aaron.com/eclipse-temurin:17-jdk
|
||
|
||
# 恢复本地 arm64 版本
|
||
docker rmi eclipse-temurin:17-jdk
|
||
docker tag eclipse-temurin:17-jdk-arm64-backup eclipse-temurin:17-jdk
|
||
docker rmi eclipse-temurin:17-jdk-arm64-backup
|
||
|
||
# ===== eclipse-temurin:17-jre =====
|
||
# 备份本地 arm64 镜像
|
||
docker tag eclipse-temurin:17-jre eclipse-temurin:17-jre-arm64-backup
|
||
|
||
# 拉取 amd64 版本
|
||
docker pull --platform linux/amd64 eclipse-temurin:17-jre
|
||
|
||
# 推送到私有仓库
|
||
docker tag eclipse-temurin:17-jre registry.t-aaron.com/eclipse-temurin:17-jre
|
||
docker push registry.t-aaron.com/eclipse-temurin:17-jre
|
||
|
||
# 恢复本地 arm64 版本
|
||
docker rmi eclipse-temurin:17-jre
|
||
docker tag eclipse-temurin:17-jre-arm64-backup eclipse-temurin:17-jre
|
||
docker rmi eclipse-temurin:17-jre-arm64-backup
|
||
|
||
|
||
# ===== ZLMediaKit =====
|
||
# 备份本地 arm64 镜像
|
||
docker tag zlmediakit/zlmediakit:master zlmediakit-master-arm64-backup
|
||
|
||
# 拉取 amd64 版本
|
||
docker pull --platform linux/amd64 zlmediakit/zlmediakit:master
|
||
|
||
# 推送到私有仓库
|
||
docker tag zlmediakit/zlmediakit:master registry.t-aaron.com/zlmediakit:master
|
||
docker push registry.t-aaron.com/zlmediakit:master
|
||
|
||
# 恢复本地 arm64 版本
|
||
docker rmi zlmediakit/zlmediakit:master
|
||
docker tag zlmediakit-master-arm64-backup zlmediakit/zlmediakit:master
|
||
docker rmi zlmediakit-master-arm64-backup
|
||
步骤4:构建并推送 wvp 镜像 (amd64)
|
||
# 进入项目根目录
|
||
cd /Users/sunpeng/workspace/stream-deploy
|
||
|
||
# 构建 amd64 版本的 wvp 镜像并直接推送
|
||
docker buildx build \
|
||
--platform linux/amd64 \
|
||
-t registry.t-aaron.com/polaris-wvp:2.7.7 \
|
||
-f docker/wvp/Dockerfile \
|
||
--push \
|
||
.
|
||
|
||
上述步骤已经写入脚本
|
||
cd /Users/sunpeng/workspace/stream-deploy/docker
|
||
chmod +x build-and-push-wvp.sh
|
||
./build-and-push-wvp.sh
|
||
|
||
步骤5:修改 docker-compose.yml
|
||
将以下镜像地址修改为私有仓库地址:
|
||
# 第4行:redis
|
||
image: registry.t-aaron.com/redis:latest
|
||
|
||
# 第24行:mysql
|
||
image: registry.t-aaron.com/mysql:8
|
||
|
||
# 第57行:zlmediakit
|
||
image: registry.t-aaron.com/zlmediakit:master
|
||
|
||
# 第83行:wvp
|
||
image: registry.t-aaron.com/polaris-wvp:2.7.7
|
||
步骤6:验证本地环境不受影响
|
||
# 检查本地镜像架构(应该还是 arm64)
|
||
docker image inspect redis:latest --format='{{.Architecture}}'
|
||
docker image inspect mysql:8 --format='{{.Architecture}}'
|
||
docker image inspect zlmediakit/zlmediakit:master --format='{{.Architecture}}'
|
||
|
||
# 验证私有仓库镜像架构(应该是 amd64)
|
||
docker pull registry.t-aaron.com/redis:latest
|
||
docker image inspect registry.t-aaron.com/redis:latest --format='{{.Architecture}}'
|
||
docker rmi registry.t-aaron.com/redis:latest
|
||
|
||
# 本地启动测试(使用本地 arm64 镜像)
|
||
cd docker
|
||
docker-compose up -d
|
||
|
||
# 查看服务状态
|
||
docker-compose ps
|
||
注意事项
|
||
步骤3中每个镜像都是:备份 → 拉取 amd64 → 推送 → 恢复本地
|
||
wvp 镜像构建时间较长(需要编译 Java 项目),请耐心等待
|
||
修改 docker-compose.yml 后,将修改后的文件部署到服务器使用
|
||
本地继续使用原来的 docker-compose.yml(或者使用环境变量区分)
|
||
步骤5:修改 docker-compose.yml 第五步有问题,要通过.env中是否配置linux来决定是使用 redis:latest 还是 registry.t-aaron.com/redis:latest 如果有linux配置成了registry.t-aaron.com/ 则使用 registry.t-aaron.com/redis:latest 无 则使用redis:latest ;修改后再次生成完整方案
|
||
好的,我理解了。通过 .env 文件中的配置来动态决定镜像地址。让我重新生成完整方案:
|
||
步骤1:准备 buildx 环境
|
||
# 创建并启用 multiarch builder
|
||
docker buildx create --name multiarch --use
|
||
|
||
# 验证 builder
|
||
docker buildx inspect --bootstrap
|
||
步骤2:登录私有仓库
|
||
# 登录你的私有仓库
|
||
docker login registry.t-aaron.com
|
||
步骤3:推送第三方镜像到私有仓库
|
||
# ===== Redis =====
|
||
# 备份本地 arm64 镜像
|
||
docker tag redis:latest redis:latest-arm64-backup
|
||
|
||
# 拉取 amd64 版本
|
||
docker pull --platform linux/amd64 redis:latest
|
||
|
||
# 推送到私有仓库
|
||
docker tag redis:latest registry.t-aaron.com/redis:latest
|
||
docker push registry.t-aaron.com/redis:latest
|
||
|
||
# 恢复本地 arm64 版本
|
||
docker rmi redis:latest
|
||
docker tag redis:latest-arm64-backup redis:latest
|
||
docker rmi redis:latest-arm64-backup
|
||
|
||
# ===== MySQL =====
|
||
# 备份本地 arm64 镜像
|
||
docker tag mysql:8 mysql:8-arm64-backup
|
||
|
||
# 拉取 amd64 版本
|
||
docker pull --platform linux/amd64 mysql:8
|
||
|
||
# 推送到私有仓库
|
||
docker tag mysql:8 registry.t-aaron.com/mysql:8
|
||
docker push registry.t-aaron.com/mysql:8
|
||
|
||
# 恢复本地 arm64 版本
|
||
docker rmi mysql:8
|
||
docker tag mysql:8-arm64-backup mysql:8
|
||
docker rmi mysql:8-arm64-backup
|
||
|
||
# ===== ZLMediaKit =====
|
||
# 备份本地 arm64 镜像
|
||
docker tag zlmediakit/zlmediakit:master zlmediakit-master-arm64-backup
|
||
|
||
# 拉取 amd64 版本
|
||
docker pull --platform linux/amd64 zlmediakit/zlmediakit:master
|
||
|
||
# 推送到私有仓库
|
||
docker tag zlmediakit/zlmediakit:master registry.t-aaron.com/zlmediakit:master
|
||
docker push registry.t-aaron.com/zlmediakit:master
|
||
|
||
# 恢复本地 arm64 版本
|
||
docker rmi zlmediakit/zlmediakit:master
|
||
docker tag zlmediakit-master-arm64-backup zlmediakit/zlmediakit:master
|
||
docker rmi zlmediakit-master-arm64-backup
|
||
步骤4:构建并推送 wvp 镜像 (amd64)
|
||
# 进入项目根目录
|
||
cd /Users/sunpeng/workspace/stream-deploy
|
||
|
||
# 构建 amd64 版本的 wvp 镜像并直接推送
|
||
docker buildx build \
|
||
--platform linux/amd64 \
|
||
-t registry.t-aaron.com/polaris-wvp:2.7.7 \
|
||
-f docker/wvp/Dockerfile \
|
||
--push \
|
||
.
|
||
步骤5:修改 docker-compose.yml 和 .env 配置
|
||
5.1 修改 docker-compose.yml
|
||
将镜像地址修改为使用环境变量:
|
||
# 第4行:redis
|
||
image: ${REGISTRY}redis:latest
|
||
|
||
# 第24行:mysql
|
||
image: ${REGISTRY}mysql:8
|
||
|
||
# 第57行:zlmediakit
|
||
image: ${REGISTRY}zlmediakit:master
|
||
|
||
# 第83行:wvp
|
||
image: ${REGISTRY}polaris-wvp:2.7.7
|
||
5.2 创建/修改 .env 文件
|
||
本地环境(Mac arm64)- docker/.env:
|
||
# 本地不配置 REGISTRY 或设置为空
|
||
REGISTRY=
|
||
|
||
# 其他配置保持不变
|
||
Stream_IP=127.0.0.1
|
||
SDP_IP=127.0.0.1
|
||
# ... 其他配置
|
||
服务器环境(Linux amd64)- docker/.env:
|
||
# 服务器配置私有仓库地址(注意最后有斜杠)
|
||
REGISTRY=registry.t-aaron.com/
|
||
|
||
# 其他配置
|
||
Stream_IP=你的服务器IP
|
||
SDP_IP=你的服务器IP
|
||
# ... 其他配置
|
||
步骤6:验证本地环境不受影响
|
||
# 检查本地镜像架构(应该还是 arm64)
|
||
docker image inspect redis:latest --format='{{.Architecture}}'
|
||
docker image inspect mysql:8 --format='{{.Architecture}}'
|
||
docker image inspect zlmediakit/zlmediakit:master --format='{{.Architecture}}'
|
||
|
||
# 验证私有仓库镜像架构(应该是 amd64)
|
||
docker pull registry.t-aaron.com/redis:latest
|
||
docker image inspect registry.t-aaron.com/redis:latest --format='{{.Architecture}}'
|
||
docker rmi registry.t-aaron.com/redis:latest
|
||
|
||
# 验证 .env 配置
|
||
cd docker
|
||
cat .env | grep REGISTRY
|
||
|
||
# 本地启动测试(使用本地 arm64 镜像)
|
||
docker-compose up -d
|
||
|
||
# 查看服务状态
|
||
docker-compose ps
|
||
|
||
# 验证使用的镜像
|
||
docker-compose config | grep image
|
||
注意事项
|
||
REGISTRY 环境变量:
|
||
本地:不设置或设置为空字符串,使用 redis:latest
|
||
服务器:设置为 registry.t-aaron.com/(注意最后的斜杠),使用 registry.t-aaron.com/redis:latest
|
||
部署到服务器时:
|
||
将修改后的 docker-compose.yml 上传到服务器
|
||
在服务器的 .env 文件中配置 REGISTRY=registry.t-aaron.com/
|
||
wvp 镜像构建时间较长,需要编译 Java 项目,请耐心等待
|
||
建议将 .env 添加到 .gitignore,避免不同环境的配置冲突 |