Skip to content

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/headererror),且非「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.ymldocker run 中配置:

  • MySQLDATABASE_TYPE=mysql,以及 DATABASE_HOSTDATABASE_PORT(如 3306)、DATABASE_USERNAMEDATABASE_PASSWORDDATABASE_DATABASE
  • PostgreSQLDATABASE_TYPE=postgres,以及 DATABASE_HOSTDATABASE_PORT(如 5432)、DATABASE_USERNAMEDATABASE_PASSWORDDATABASE_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

相关链接