Skip to content

Commit a984169

Browse files
author
Taois
committed
add:添加播放代理插件 mediaProxy
1 parent c0157c4 commit a984169

File tree

18 files changed

+3420
-0
lines changed

18 files changed

+3420
-0
lines changed

mediaProxy/.dockerignore

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Git相关
2+
.git
3+
.gitignore
4+
5+
# 构建产物
6+
build/
7+
dist/
8+
*.exe
9+
mediaProxy
10+
11+
# 开发工具
12+
.idea/
13+
.vscode/
14+
*.swp
15+
*.swo
16+
*~
17+
18+
# 日志文件
19+
*.log
20+
21+
# 临时文件
22+
tmp/
23+
temp/
24+
25+
# 测试覆盖率
26+
*.out
27+
coverage.html
28+
29+
# 操作系统文件
30+
.DS_Store
31+
Thumbs.db
32+
33+
# 文档
34+
README.md
35+
LICENSE
36+
*.md
37+
38+
# CI/CD
39+
.github/
40+
.gitlab-ci.yml
41+
42+
# Docker相关
43+
Dockerfile*
44+
docker-compose*.yml
45+
.dockerignore

mediaProxy/.env.example

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# MediaProxy 环境变量配置示例
2+
# 复制此文件为 .env 并根据需要修改配置
3+
4+
# 应用版本(构建时使用)
5+
VERSION=dev
6+
7+
# 服务端口
8+
PORT=57574
9+
10+
# DNS服务器
11+
DNS=8.8.8.8
12+
13+
# 构建时间(自动生成)
14+
BUILD_TIME=
15+
16+
# Git提交哈希(自动生成)
17+
GIT_COMMIT=
18+
19+
# Docker相关配置
20+
DOCKER_REGISTRY=
21+
DOCKER_TAG=latest
22+
23+
# 调试模式(true/false)
24+
DEBUG=false

mediaProxy/BUILD_WINDOWS.md

Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
# Windows PowerShell 构建指南
2+
3+
本文档介绍如何在Windows开发环境中使用PowerShell构建脚本来编译MediaProxy项目。
4+
5+
## 前置要求
6+
7+
1. **Go环境**: 确保已安装Go 1.19或更高版本
8+
2. **PowerShell**: Windows 10/11自带PowerShell 5.1或更高版本
9+
3. **Git**: 用于获取版本信息(可选)
10+
4. **UPX**: 用于二进制文件压缩(可选,推荐安装)
11+
12+
### 安装UPX(推荐)
13+
14+
UPX可以显著减小二进制文件大小:
15+
16+
```powershell
17+
# 使用Chocolatey安装
18+
choco install upx
19+
20+
# 或者从官网下载: https://upx.github.io/
21+
```
22+
23+
## 构建脚本使用
24+
25+
### 基本用法
26+
27+
```powershell
28+
# 显示帮助信息
29+
.\build.ps1 -Help
30+
31+
# 构建所有平台(默认)
32+
.\build.ps1
33+
34+
# 构建指定平台
35+
.\build.ps1 -Platform windows/amd64
36+
37+
# 开发模式构建(快速,无优化)
38+
.\build.ps1 -Dev
39+
40+
# 清理构建目录
41+
.\build.ps1 -Clean
42+
```
43+
44+
### 参数说明
45+
46+
| 参数 | 说明 | 示例 |
47+
|------|------|------|
48+
| `-All` | 构建所有平台(默认行为) | `.\build.ps1 -All` |
49+
| `-Platform` | 指定构建平台 | `.\build.ps1 -Platform linux/amd64` |
50+
| `-Clean` | 清理构建目录 | `.\build.ps1 -Clean` |
51+
| `-Dev` | 开发模式(快速构建,跳过优化) | `.\build.ps1 -Dev` |
52+
| `-NoUpx` | 禁用UPX压缩 | `.\build.ps1 -NoUpx` |
53+
| `-Verbose` | 详细输出 | `.\build.ps1 -Verbose` |
54+
| `-Help` | 显示帮助信息 | `.\build.ps1 -Help` |
55+
56+
### 支持的平台
57+
58+
- `linux/amd64` - Linux 64位
59+
- `linux/arm64` - Linux ARM64
60+
- `linux/386` - Linux 32位
61+
- `windows/amd64` - Windows 64位
62+
- `windows/386` - Windows 32位
63+
- `darwin/amd64` - macOS Intel
64+
- `darwin/arm64` - macOS Apple Silicon
65+
- `freebsd/amd64` - FreeBSD 64位
66+
67+
## 构建示例
68+
69+
### 1. 快速开发构建
70+
71+
适用于开发阶段的快速测试:
72+
73+
```powershell
74+
.\build.ps1 -Platform windows/amd64 -Dev -Verbose
75+
```
76+
77+
### 2. 生产环境构建
78+
79+
构建所有平台的优化版本:
80+
81+
```powershell
82+
.\build.ps1 -Verbose
83+
```
84+
85+
### 3. 特定平台构建
86+
87+
只构建Linux 64位版本:
88+
89+
```powershell
90+
.\build.ps1 -Platform linux/amd64
91+
```
92+
93+
### 4. 无压缩构建
94+
95+
如果没有安装UPX或不想压缩:
96+
97+
```powershell
98+
.\build.ps1 -NoUpx
99+
```
100+
101+
## 构建输出
102+
103+
### 目录结构
104+
105+
```
106+
mediaProxy/
107+
├── build/ # 构建的二进制文件
108+
│ ├── mediaProxy_windows_amd64.exe
109+
│ ├── mediaProxy_linux_amd64
110+
│ └── ...
111+
└── dist/ # 发布包
112+
├── mediaProxy_v1.0.0_windows_amd64.zip
113+
├── mediaProxy_v1.0.0_linux_amd64.tar.gz
114+
└── ...
115+
```
116+
117+
### 发布包内容
118+
119+
每个发布包包含:
120+
- 编译好的二进制文件
121+
- README.md 文档
122+
- start.bat/start.sh 启动脚本
123+
- config.example 配置示例
124+
125+
## 构建优化
126+
127+
### 体积优化
128+
129+
1. **Go编译标志**: `-s -w` 去除调试信息
130+
2. **UPX压缩**: 使用LZMA算法进一步压缩
131+
3. **Trimpath**: 去除构建路径信息
132+
133+
### 版本信息
134+
135+
构建时会自动嵌入以下信息:
136+
- Git版本标签或提交哈希
137+
- 构建时间(UTC)
138+
- Git提交哈希
139+
140+
## 故障排除
141+
142+
### 常见问题
143+
144+
1. **Go环境未找到**
145+
```
146+
Error: Go environment not found
147+
```
148+
解决:确保Go已正确安装并添加到PATH
149+
150+
2. **UPX压缩失败**
151+
```
152+
UPX compression failed, continuing...
153+
```
154+
解决:这是警告,不影响构建。可安装UPX或使用`-NoUpx`参数
155+
156+
3. **权限错误**
157+
```
158+
Access denied
159+
```
160+
解决:以管理员身份运行PowerShell
161+
162+
4. **执行策略限制**
163+
```
164+
cannot be loaded because running scripts is disabled
165+
```
166+
解决:
167+
```powershell
168+
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
169+
```
170+
171+
### 调试模式
172+
173+
使用`-Verbose`参数获取详细的构建信息:
174+
175+
```powershell
176+
.\build.ps1 -Platform windows/amd64 -Verbose
177+
```
178+
179+
## 性能对比
180+
181+
| 构建模式 | 构建时间 | 文件大小 | 适用场景 |
182+
|----------|----------|----------|----------|
183+
| 开发模式 | ~10秒 | ~8MB | 开发测试 |
184+
| 标准模式 | ~30秒 | ~3MB | 生产部署 |
185+
| 全平台 | ~3分钟 | 各平台~3MB | 发布版本 |
186+
187+
## 自动化集成
188+
189+
### 在CI/CD中使用
190+
191+
```powershell
192+
# 检查Go环境
193+
go version
194+
195+
# 清理并构建
196+
.\build.ps1 -Clean
197+
.\build.ps1 -All -Verbose
198+
199+
# 检查构建结果
200+
if ($LASTEXITCODE -eq 0) {
201+
Write-Host "Build successful"
202+
} else {
203+
Write-Host "Build failed"
204+
exit 1
205+
}
206+
```
207+
208+
### 定时构建
209+
210+
可以结合Windows任务计划程序实现定时构建:
211+
212+
```powershell
213+
# 创建构建任务
214+
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\path\to\build.ps1"
215+
$trigger = New-ScheduledTaskTrigger -Daily -At "02:00"
216+
Register-ScheduledTask -TaskName "MediaProxy-Build" -Action $action -Trigger $trigger
217+
```
218+
219+
## 更多信息
220+
221+
- 项目主页: [MediaProxy GitHub](https://github.com/your-org/mediaProxy)
222+
- 问题反馈: [Issues](https://github.com/your-org/mediaProxy/issues)
223+
- 贡献指南: [CONTRIBUTING.md](CONTRIBUTING.md)

mediaProxy/Dockerfile

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# MediaProxy Dockerfile
2+
# 多阶段构建,优化镜像大小
3+
4+
# 构建阶段
5+
FROM golang:1.21-alpine AS builder
6+
7+
# 设置工作目录
8+
WORKDIR /app
9+
10+
# 安装构建依赖
11+
RUN apk add --no-cache git ca-certificates tzdata
12+
13+
# 复制go mod文件
14+
COPY go.mod go.sum ./
15+
16+
# 下载依赖
17+
RUN go mod download
18+
19+
# 复制源代码
20+
COPY . .
21+
22+
# 构建应用
23+
ARG VERSION=dev
24+
ARG BUILD_TIME
25+
ARG GIT_COMMIT
26+
27+
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
28+
-ldflags="-s -w -X main.Version=${VERSION} -X main.BuildTime=${BUILD_TIME} -X main.GitCommit=${GIT_COMMIT}" \
29+
-trimpath \
30+
-o mediaProxy .
31+
32+
# 运行阶段
33+
FROM alpine:latest
34+
35+
# 安装运行时依赖
36+
RUN apk --no-cache add ca-certificates tzdata
37+
38+
# 创建非root用户
39+
RUN addgroup -g 1001 -S mediaproxy && \
40+
adduser -u 1001 -S mediaproxy -G mediaproxy
41+
42+
# 设置工作目录
43+
WORKDIR /app
44+
45+
# 从构建阶段复制二进制文件
46+
COPY --from=builder /app/mediaProxy .
47+
48+
# 复制静态文件
49+
COPY --from=builder /app/static ./static
50+
51+
# 设置文件权限
52+
RUN chown -R mediaproxy:mediaproxy /app
53+
54+
# 切换到非root用户
55+
USER mediaproxy
56+
57+
# 暴露端口
58+
EXPOSE 57574
59+
60+
# 健康检查
61+
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
62+
CMD wget --no-verbose --tries=1 --spider http://localhost:57574/ || exit 1
63+
64+
# 启动命令
65+
ENTRYPOINT ["./mediaProxy"]
66+
CMD ["-port", "57574"]

0 commit comments

Comments
 (0)