Skip to content

Commit 1af1c06

Browse files
committed
cluster pro test
1 parent 931b397 commit 1af1c06

23 files changed

Lines changed: 910 additions & 0 deletions

DockerfilePro

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# 多架构运行镜像 - 支持 AMD64 和 ARM64(使用清华大学镜像源)
2+
FROM --platform=$BUILDPLATFORM swr.cn-east-3.myhuaweicloud.com/intetech/ffmpeg:latest AS base
3+
4+
WORKDIR /monibuca
5+
6+
# 配置清华大学镜像源(DEB822 格式)
7+
RUN echo 'Types: deb\n\
8+
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu\n\
9+
Suites: noble noble-updates noble-backports\n\
10+
Components: main restricted universe multiverse\n\
11+
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg\n\
12+
\n\
13+
Types: deb\n\
14+
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu\n\
15+
Suites: noble-security\n\
16+
Components: main restricted universe multiverse\n\
17+
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg' > /etc/apt/sources.list.d/ubuntu.sources
18+
19+
# 安装必要的工具(使用清华源加速)
20+
RUN apt-get update && \
21+
apt-get install -y tcpdump && \
22+
rm -rf /var/lib/apt/lists/*
23+
24+
# 复制二进制文件
25+
ARG TARGETARCH
26+
COPY pro_linux_${TARGETARCH} ./monibuca_linux
27+
28+
# 复制静态资源
29+
COPY example/default/admin.zip ./admin.zip
30+
COPY example/default/test.mp4 ./test.mp4
31+
COPY example/default/test.flv ./test.flv
32+
33+
# 复制配置文件
34+
COPY example/default/config.yaml /etc/monibuca/config.yaml
35+
36+
# 导出端口
37+
EXPOSE 6000 8080 8443 1935 554 5060 9000-20000/udp
38+
EXPOSE 5060/udp 44944/udp
39+
40+
# 设置入口点
41+
ENTRYPOINT ["./monibuca_linux"]
42+
CMD ["-c", "/etc/monibuca/config.yaml"]

build_docker_pro.sh

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
#!/bin/bash
2+
3+
# 构建多架构 Docker 镜像并推送到私有仓库
4+
set -e
5+
6+
echo "=========================================="
7+
echo "开始构建多架构 Docker 镜像"
8+
echo "=========================================="
9+
10+
# 获取版本信息
11+
artifactId=monibuca-pro
12+
version=v5.2.0
13+
group=swr.cn-east-3.myhuaweicloud.com/intetech
14+
15+
# 构建 AMD64 Docker 镜像并保存为 tar
16+
echo ""
17+
echo "=========================================="
18+
echo "构建 AMD64 Docker 镜像..."
19+
echo "=========================================="
20+
docker buildx build \
21+
--platform=linux/amd64 \
22+
--no-cache \
23+
--progress=plain \
24+
-t ${artifactId}:${version}-amd64 \
25+
-f ./DockerfilePro \
26+
-o type=docker,dest=- . > ${artifactId}-amd64.tar
27+
28+
# 构建 ARM64 Docker 镜像并保存为 tar
29+
echo ""
30+
echo "=========================================="
31+
echo "构建 ARM64 Docker 镜像..."
32+
echo "=========================================="
33+
docker buildx build \
34+
--platform=linux/arm64 \
35+
--no-cache \
36+
--progress=plain \
37+
-t ${artifactId}:${version}-arm64 \
38+
-f ./DockerfilePro \
39+
-o type=docker,dest=- . > ${artifactId}-arm64.tar
40+
41+
# 加载 tar 文件到本地 Docker
42+
echo ""
43+
echo "加载 Docker 镜像..."
44+
docker load < ${artifactId}-amd64.tar
45+
docker load < ${artifactId}-arm64.tar
46+
47+
# 推送到私有仓库
48+
echo ""
49+
echo "=========================================="
50+
echo "推送到私有仓库..."
51+
echo "=========================================="
52+
53+
# 推送 AMD64
54+
echo "推送 AMD64 镜像..."
55+
docker tag ${artifactId}:${version}-amd64 ${group}/${artifactId}:${version}-amd64
56+
docker push ${group}/${artifactId}:${version}-amd64
57+
58+
# 删除本地标签
59+
docker rmi ${artifactId}:${version}-amd64
60+
docker rmi ${group}/${artifactId}:${version}-amd64
61+
62+
# 推送 ARM64
63+
echo "推送 ARM64 镜像..."
64+
docker tag ${artifactId}:${version}-arm64 ${group}/${artifactId}:${version}-arm64
65+
docker push ${group}/${artifactId}:${version}-arm64
66+
67+
# 删除本地标签
68+
docker rmi ${artifactId}:${version}-arm64
69+
docker rmi ${group}/${artifactId}:${version}-arm64
70+
71+
# 创建并推送多架构 manifest
72+
echo ""
73+
echo "=========================================="
74+
echo "创建多架构 manifest..."
75+
echo "=========================================="
76+
77+
# 删除已存在的 manifest
78+
docker manifest rm ${group}/${artifactId}:${version} 2>/dev/null || true
79+
80+
# 创建版本 manifest
81+
echo "创建版本 manifest..."
82+
docker manifest create \
83+
--amend ${group}/${artifactId}:${version} \
84+
${group}/${artifactId}:${version}-amd64 \
85+
${group}/${artifactId}:${version}-arm64
86+
87+
# 推送版本 manifest
88+
docker manifest push ${group}/${artifactId}:${version}
89+
90+
# 创建并推送 latest manifest
91+
echo "创建并推送 latest manifest..."
92+
docker manifest rm ${group}/${artifactId}:latest 2>/dev/null || true
93+
docker manifest create \
94+
--amend ${group}/${artifactId}:latest \
95+
${group}/${artifactId}:${version}-amd64 \
96+
${group}/${artifactId}:${version}-arm64
97+
docker manifest push ${group}/${artifactId}:latest
98+
99+
# 清理临时文件
100+
echo ""
101+
echo "清理临时文件..."
102+
rm -rf ${artifactId}-amd64.tar
103+
rm -rf ${artifactId}-arm64.tar
104+
105+
rm -f monibuca_amd64 monibuca_arm64 2>/dev/null || true
106+
107+
echo ""
108+
echo "=========================================="
109+
echo "✓ 多架构镜像构建并推送完成"
110+
echo "镜像地址: ${group}/${artifactId}:${version}"
111+
echo "支持架构: linux/amd64, linux/arm64"
112+
echo "=========================================="

example/cascade/activate_m7s.key

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
haMyv2tZ6OkEjQqsExOcjE1a7/M1oQYSXVVc904xuf3XsP5s97/xocAebBqysHNvg6p9wkQwpIdSlXvmx8PGSjbVWUUzrcXiQh87vksW2gbEHHa2naG7vxfczJibyQ3siPdSzDegbPcKRwxr9sKM/XqJkc03q5XYxC3UnwfDrfReK7uS+Dnw6Ak6Irf+mn4wWZAx9H3bEaczbwEOhSY3eAUpFsFnMiu2wz+Hnc70As/69nz8iOdL8DMiEgLEIUcUFD10uJqk84wlsuMVlERw0gmplQ0CWpmXoBOw/OaZBXpKqLUogVHvN1Zx0CAvd5PdHRfKkMlfhva9bizbw6sm5aShuQmP47IejUJd1aqTBDhXpFh/01XD+AMmFk/ZSfyeaV29PaT/yzxMd9WvWqRaVclhP0VBcd9cLTrgy+UAJvavg2UHz3M1MlHR18uzobRPY/1xkXLVjYyMbtnAA6b/oQq0VTfcQ1o8QU/8Beq0lfuWRyBskXvMAOEhkw3lAjvQ

example/cascade/config1.yaml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
global:
2+
loglevel: info
3+
http:
4+
listenaddr: :8080
5+
listenaddrtls: :18555
6+
tcp:
7+
listenaddr: :50052
8+
db:
9+
dsn: "test1.db"
10+
type: "sqlite"
11+
rtmp:
12+
tcp:
13+
listenaddr: :19351
14+
rtsp:
15+
tcp: :8554
16+
webrtc:
17+
port: udp:9000-9100
18+
gb28181:
19+
enable: false
20+
cluster:
21+
quic:
22+
listenaddr: :44941
23+
sync:
24+
serverid: "node1"
25+
address: "localhost:50052"
26+
seedservers:
27+
- "localhost:50053"
28+
- "localhost:50054"
29+
heartbeatinterval: 5s
30+
syncinterval: 30s
31+
role:
32+
- name: "internal"
33+
description: "内网角色"
34+
canAccess:
35+
- "public"
36+
- "relay"
37+
accessibleBy:
38+
- "internal"
39+
- "admin"
40+
- name: "public"
41+
description: "公网角色"
42+
canAccess:
43+
- "admin"
44+
- "storage"
45+
accessibleBy:
46+
- "internal"
47+
- "relay"
48+
# routing:
49+
# redirect:
50+
# "^test/":
51+
# statusCode: 307
52+
# forceredirect: true
53+
# targetoverrides:
54+
# node1: localhost:18081
55+
# node2: localhost:18082
56+
# node3: localhost:18083
57+
# node4: localhost:18084

example/cascade/config2.yaml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
global:
2+
loglevel: info
3+
http:
4+
listenaddr: :8081
5+
listenaddrtls: :18556
6+
tcp:
7+
listenaddr: :50053
8+
db:
9+
dsn: "test2.db"
10+
type: "sqlite"
11+
# S3存储配置示例(需要时取消注释并填写实际值)
12+
storage:
13+
s3:
14+
region: "us-east-1" # AWS区域
15+
endpoint: "storage-dev.xiding.tech" # S3服务端点
16+
accessKeyID: "xidinguser" # 访问密钥ID
17+
secretAccessKey: "U2FsdGVkX1/7uyvj0trCzSNFsfDZ66dMSAEZjNlvW1c=" # 秘密访问密钥
18+
bucket: "vidu-media-bucket" # 存储桶名称
19+
pathPrefix: "" # 文件路径前缀
20+
forcePathStyle: true # 强制路径样式(MinIO需要设为true)
21+
useSSL: true # 是否使用SSL
22+
timeout: "600s" # 上传超时时间
23+
rtmp:
24+
tcp:
25+
listenaddr: :19352
26+
rtsp:
27+
tcp: :8555
28+
webrtc:
29+
port: udp:9200-9300
30+
gb28181:
31+
enable: false
32+
cluster:
33+
quic:
34+
listenaddr: :44942
35+
sync:
36+
serverid: "node2"
37+
address: "localhost:50053"
38+
seedservers:
39+
- "localhost:50052"
40+
- "localhost:50054"
41+
heartbeatinterval: 5s
42+
syncinterval: 30s
43+
role:
44+
- name: "internal"
45+
description: "内网角色"
46+
canAccess:
47+
- "public"
48+
- "relay"
49+
accessibleBy:
50+
- "internal"
51+
- "admin"
52+
- name: "public"
53+
description: "公网角色"
54+
canAccess:
55+
- "admin"
56+
- "storage"
57+
accessibleBy:
58+
- "internal"
59+
- "relay"
60+
# routing:
61+
# redirect:
62+
# "^test/":
63+
# statusCode: 307
64+
# forceredirect: true
65+
# targetoverrides:
66+
# node1: localhost:18081
67+
# node2: localhost:18082
68+
# node3: localhost:18083
69+
# node4: localhost:18084

example/cascade/config3.yaml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
global:
2+
loglevel: info
3+
http:
4+
listenaddr: :8082
5+
listenaddrtls: :18557
6+
tcp:
7+
listenaddr: :50054
8+
db:
9+
dsn: "test3.db"
10+
type: "sqlite"
11+
# S3存储配置示例(需要时取消注释并填写实际值)
12+
storage:
13+
s3:
14+
region: "us-east-1" # AWS区域
15+
endpoint: "storage-dev.xiding.tech" # S3服务端点
16+
accessKeyID: "xidinguser" # 访问密钥ID
17+
secretAccessKey: "U2FsdGVkX1/7uyvj0trCzSNFsfDZ66dMSAEZjNlvW1c=" # 秘密访问密钥
18+
bucket: "vidu-media-bucket" # 存储桶名称
19+
pathPrefix: "" # 文件路径前缀
20+
forcePathStyle: true # 强制路径样式(MinIO需要设为true)
21+
useSSL: true # 是否使用SSL
22+
timeout: "600s" # 上传超时时间
23+
rtmp:
24+
tcp:
25+
listenaddr: :19353
26+
rtsp:
27+
tcp: :8556
28+
gb28181:
29+
enable: false
30+
webrtc:
31+
port: udp:9400-9500
32+
cluster:
33+
quic:
34+
listenaddr: :44943
35+
sync:
36+
serverid: "node3"
37+
address: "localhost:50054"
38+
seedservers:
39+
- "localhost:50052"
40+
- "localhost:50053"
41+
heartbeatinterval: 5s
42+
syncinterval: 30s
43+
role:
44+
- name: "internal"
45+
description: "内网角色"
46+
canAccess:
47+
- "public"
48+
- "relay"
49+
accessibleBy:
50+
- "internal"
51+
- "admin"
52+
- name: "public"
53+
description: "公网角色"
54+
canAccess:
55+
- "admin"
56+
- "storage"
57+
accessibleBy:
58+
- "internal"
59+
- "relay"
60+
# routing:
61+
# redirect:
62+
# "^test/":
63+
# statusCode: 307
64+
# forceredirect: true
65+
# targetoverrides:
66+
# node1: localhost:18081
67+
# node2: localhost:18082
68+
# node3: localhost:18083
69+
# node4: localhost:18084

0 commit comments

Comments
 (0)