Docker 部署
OmniBox 通过 Docker 部署,可从 Docker Hub 拉取预构建镜像,无需从源码构建。
镜像版本说明
| 镜像 | 标签 | 体积 | 说明 |
|---|---|---|---|
| 完整版 | lampon/omnibox:latest | 较大 | 含 Node + Python + Playwright + Chromium headless shell + ffmpeg,支持 JS / Python 爬虫、OmniBox.sniffVideo 视频嗅探、ffprobe 时长探测 |
| 精简版 | lampon/omnibox:lite | 更小 | 仅 Node 运行时,仅支持 JS 爬虫,无 Python/Chromium/ffmpeg,嗅探与时长探测不可用 |
- 需要 Python 爬虫 或 视频嗅探:使用 完整版
lampon/omnibox:latest。 - 仅使用 JS 爬虫、希望体积更小:使用 精简版
lampon/omnibox:lite。
使用预构建镜像
完整版
bash
docker pull lampon/omnibox:latest
docker run -d \
--name omnibox \
--restart unless-stopped \
-p 7023:7023 \
-v omnibox-data:/app/data \
lampon/omnibox:latest精简版
bash
docker pull lampon/omnibox:lite
docker run -d \
--name omnibox \
--restart unless-stopped \
-p 7023:7023 \
-v omnibox-data:/app/data \
lampon/omnibox:lite访问:http://localhost:7023(端口以实际映射为准,如 -p 7123:7023 则访问 http://localhost:7123)。
验证完整版镜像(嗅探功能)
完整版使用 Chromium headless shell,行为与无头模式一致。可这样验证嗅探是否可用:
- 接口验证:启动容器后对嗅探接口发请求(需带鉴权等),返回非「playwright not installed」即说明浏览器可用。
- 脚本验证:在容器内执行
echo '{"url":"https://example.com"}' | python3 /app/scripts/video_sniffer.py
若输出为 JSON(含url/header或error),且非「playwright not installed」,则 headless shell 工作正常。
环境变量示例
bash
docker run -d \
--name omnibox \
-p 7023:7023 \
-e SERVER_PORT=7023 \
-e DATABASE_TYPE=sqlite \
-e DATABASE_URL=./data/data.sqlite \
-v omnibox-data:/app/data \
lampon/omnibox:latest使用 MySQL 或 PostgreSQL
默认使用 SQLite(无需配置)。若使用 MySQL 或 PostgreSQL,在 docker-compose.yml 或 docker run 中配置:
- MySQL:
DATABASE_TYPE=mysql,以及DATABASE_HOST、DATABASE_PORT(如 3306)、DATABASE_USERNAME、DATABASE_PASSWORD、DATABASE_DATABASE - PostgreSQL:
DATABASE_TYPE=postgres,以及DATABASE_HOST、DATABASE_PORT(如 5432)、DATABASE_USERNAME、DATABASE_PASSWORD、DATABASE_DATABASE
完整说明与示例见 安装部署 - 环境变量与数据库选择。
视频嗅探说明
完整版镜像内已安装 Python、Playwright 与 Chromium headless shell,爬虫脚本可调用 OmniBox.sniffVideo(url, headers) 做播放页嗅探。建议在 docker-compose.yml 中为服务增加 ipc: host,以减少 Chromium 内存问题。使用 Dockerfile.lite 构建的精简版不含 Python/ffprobe 与 video_sniffer.py,嗅探接口会返回「video_sniffer.py not found」。
数据持久化
Docker 卷
bash
docker run -d \
--name omnibox \
-p 7023:7023 \
-v omnibox-data:/app/data \
lampon/omnibox:latest主机目录
bash
docker run -d \
--name omnibox \
-p 7023:7023 \
-v /path/to/data:/app/data \
lampon/omnibox:latest如需从源码自行构建或多架构推送,请参阅 项目文档 - Docker 构建与推送。
故障排除
容器无法启动
查看日志:
bash
docker compose logs omnibox
# 或
docker logs omnibox常见原因:端口占用、环境变量错误、数据目录权限。
数据备份与恢复
备份:
bash
docker run --rm \
-v omnibox-data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/omnibox-backup.tar.gz -C /data .恢复:
bash
docker run --rm \
-v omnibox-data:/data \
-v $(pwd):/backup \
alpine sh -c "cd /data && tar xzf /backup/omnibox-backup.tar.gz"资源限制
bash
docker run -d \
--name omnibox \
-p 7023:7023 \
--memory="512m" \
--cpus="1.0" \
-v omnibox-data:/app/data \
lampon/omnibox:latest生产建议
- 使用 Docker Compose 管理服务,便于维护。
- 使用 Nginx / Traefik 等反向代理,并配置 HTTPS(如 Let's Encrypt)。
- 若使用视频嗅探,在 Compose 中为服务配置
ipc: host。
