ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

biliTickerBuy Docker 部署实战:从 docker run 到 docker compose 的完整配置指南

biliTickerBuy Docker 部署实战:从 docker run 到 docker compose 的完整配置指南 biliTickerBuy Docker 部署实战从 docker run 到 docker compose 的完整配置指南【免费下载链接】biliTickerBuyb站会员购购票辅助工具项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy本文围绕biliTickerBuyB 站会员购购票辅助工具的官方 Docker 镜像系统讲解如何通过docker run与docker compose两种方式完成容器化部署覆盖最小启动、数据持久化挂载、环境变量配置、镜像更新与典型故障排查。读完本文你将能够独立在一台仅装有 Docker Engine / Docker Desktop 的服务器上把biliTickerBuy以可持久化的 Web 服务形态长期稳定运行并理解每个环境变量在源码中的真实作用。一、部署前置要求与镜像来源biliTickerBuy官方已提供构建好的容器镜像无需从源码自行编译。部署前需要确认已安装Docker Engine或Docker Desktop若计划使用docker compose编排需要额外安装Docker Compose插件新版 Docker Desktop 与多数发行版 Docker Engine 已内置。镜像发布在 GitHub Container RegistryGHCR镜像名为ghcr.io/mikumifa/bilitickerbuy默认拉取标签为latest也可以使用固定版本标签例如v2.15.8。镜像中已内置了应用运行所需的完整 Python 运行时、依赖与中文字体构建细节见仓库根目录的 Dockerfile基础镜像为python:3.12-slim预装fontconfig与fonts-wqy-microhei/fonts-wqy-zenhei中文字体确保 Web 界面与抢票日志中的中文正常渲染设置时区TZAsia/Shanghai并默认写入BTB_SERVER_NAME0.0.0.0、GRADIO_SERVER_PORT7860、GRADIO_NUM_PORTS100、BTB_DOCKER1等环境变量暴露7860端口容器启动命令为python main.py即直接进入 Web UI 模式。二、方式一使用 docker run 部署2.1 最小启动不关心数据持久化时一条命令即可拉起服务docker run -d \ --name bilitickerbuy \ -p 7860:7860 \ -e BTB_SERVER_NAME0.0.0.0 \ -e GRADIO_SERVER_PORT7860 \ ghcr.io/mikumifa/bilitickerbuy:latest启动后通过浏览器访问http://服务器IP:7860其中-e BTB_SERVER_NAME0.0.0.0让服务监听容器内所有网卡配合端口映射对外暴露GRADIO_SERVER_PORT7860与-p 7860:7860保持一致。这两个变量在 Dockerfile 中已作为默认值写入此处显式声明主要是为了可读性。注意BTB_SERVER_NAME在非 Docker 环境下的默认值是127.0.0.1见 app_cmd/cli_args.py仅监听本机容器内由 Dockerfile 改写为0.0.0.0所以必须配合端口映射或防火墙放行才能从宿主机外部访问。2.2 带持久化挂载启动推荐容器是临时性的docker rm之后容器内写入的配置、登录 Cookies、日志都会一并消失。长期使用建议把四类数据全部挂载到宿主机docker run -d \ --name bilitickerbuy \ -p 7860:7860 \ -e BTB_SERVER_NAME0.0.0.0 \ -e GRADIO_SERVER_PORT7860 \ -e GRADIO_NUM_PORTS100 \ -e BTB_CONFIG_PATH/app/data/config.json \ -e BTB_COOKIES_PATH/app/data/cookies.json \ -e BTB_LOG_DIR/app/data/btb_logs \ -v $(pwd)/data:/app/data \ ghcr.io/mikumifa/bilitickerbuy:latest其中-v $(pwd)/data:/app/data把宿主机当前目录下的data文件夹映射到容器内/app/data/app是镜像设定的工作目录配置、Cookies、日志都写到这个卷里删容器不丢数据。Windows PowerShell 下写法略有差异续行符为反引号路径变量用${PWD}docker run -d --name bilitickerbuy -p 7860:7860 -e BTB_SERVER_NAME0.0.0.0 -e GRADIO_SERVER_PORT7860 -e GRADIO_NUM_PORTS100 -e BTB_CONFIG_PATH/app/data/config.json -e BTB_COOKIES_PATH/app/data/cookies.json -e BTB_LOG_DIR/app/data/btb_logs -v ${PWD}/data:/app/data ghcr.io/mikumifa/bilitickerbuy:latest2.3 查看日志与停止容器# 实时跟踪日志 docker logs -f bilitickerbuy # 停止并删除容器 docker rm -f bilitickerbuy日志会写入容器标准输出docker logs可看同时应用也会按BTB_LOG_DIR落盘日志文件。三、方式二使用 docker compose 部署对于长期运行、需要「一键启停 自动重启 集中管理环境变量」的场景官方推荐docker compose。一份最小可用的compose.yaml如下services: bilitickerbuy: image: ghcr.io/mikumifa/bilitickerbuy:latest container_name: bilitickerbuy restart: unless-stopped ports: - 7860:7860 environment: BTB_SERVER_NAME: 0.0.0.0 GRADIO_SERVER_PORT: 7860 GRADIO_NUM_PORTS: 100 BTB_CONFIG_PATH: /app/data/config.json BTB_COOKIES_PATH: /app/data/cookies.json BTB_LOG_DIR: /app/data/btb_logs volumes: - ./data:/app/data要点说明restart: unless-stopped容器异常退出或宿主机重启后自动拉起是长期运行的关键volumes: ./data:/app/data与 2.2 节中的挂载一一对应实现配置/登录态/日志持久化环境变量集中写在environment下后续想调整通知渠道或抢票参数只需改这一个文件。启动、查日志、停止docker compose up -d # 后台启动 docker compose logs -f # 跟踪日志 docker compose down # 停止并移除容器数据卷 ./data 保留仓库根目录还自带了一份示例 docker-compose.yml它与上面略有不同采用的是build: .从本地源码构建方式并额外演示了BTB_ROOT_PATH的用法——当通过远端 IP、域名或反向代理访问时可把它设置为浏览器实际访问的外部地址如http://your-server-ip:7860或https://your-domain.example并在注释中给出通过环境变量持久化代理池与通知配置的示例BTB_HTTPS_PROXYS、BTB_PUSHPLUSTOKEN、BTB_BARKTOKEN、BTB_NTFY_URL。日常直接使用官方镜像时照抄上文基于image:的版本即可。四、常用环境变量详解附源码级实现依据官方镜像已在 Dockerfile 中写入了部分默认值其余变量可按需在docker run -e或compose.yaml的environment中覆盖。下表汇总了部署中最常用的变量环境变量说明默认值BTB_SERVER_NAMEWeb 服务监听地址0.0.0.0GRADIO_SERVER_PORTWeb 服务端口7860GRADIO_NUM_PORTSGradio 可用端口池大小100BTB_CONFIG_PATH配置文件路径默认/app/config.jsonDocker 推荐/app/data/config.jsonBTB_COOKIES_PATHCookies 文件路径默认/app/cookies.jsonDocker 推荐/app/data/cookies.jsonBTB_LOG_DIR日志目录默认/app/btb_logsDocker 推荐/app/data/btb_logsBTB_SHARE是否启用 Gradio 公网分享falseBTB_PUSHPLUSTOKENPushPlus 通知 token空BTB_BARKTOKENBark 通知 token空BTB_NTFY_URLntfy 推送地址空BTB_NTP_SERVERSNTP 服务器列表空为空时默认依次使用ntp.aliyun.com,ntp.tencent.com,cn.ntp.org.cn,time.cloudflare.com4.1 Web 服务相关监听、端口、公网分享与反向代理BTB_SERVER_NAME/GRADIO_SERVER_PORT控制 Gradio 服务的监听地址与端口。UI 启动参数在 app_cmd/cli_args.py 中定义其中port会依次读取BTB_PORT与GRADIO_SERVER_PORT。最终传给demo.launch(...)的调用位于 app_cmd/ticker.py。GRADIO_NUM_PORTSGradio 多进程/多端口池大小通常无需修改。BTB_SHARE是否开启 Gradio 公网分享生成临时公网链接。这里有一个容易忽略的源码细节在 app_cmd/ticker.py 中程序会通过检测/.dockerenv文件或BTB_DOCKER 1判断是否运行在容器内而demo.launch的share参数取值为args.share or is_docker——也就是说在 Docker 环境下公网分享默认是开启的即使不显式设置BTB_SHARE。若不需要公网分享可显式将其关闭。BTB_ROOT_PATH设置 Web UI 的外部访问根路径/地址用于「远程 IP、域名、反向代理」访问场景与demo.launch(root_path...)直接对应app_cmd/ticker.py。4.2 数据持久化相关配置、Cookies、日志这三个路径变量决定容器内的数据落点是「删容器不丢数据」的关键。其解析逻辑集中在 util/init.pyBTB_LOG_DIR日志目录启动时会自动makedirs并交给 loguru 写日志util/init.pyBTB_CONFIG_PATH即ConfigDBKVDatabase的持久化文件路径util/init.py前端配置与运行参数都存在这个 JSON 文件里BTB_COOKIES_PATH全局 Cookies 文件路径util/init.py保存登录态。它们同时会被加入 Gradio 的allowed_pathsapp_cmd/ticker.py这也是下一节「InvalidPathError」报错的根源与解法所在。此外容器内默认BTB_DOCKER1inbrowser参数会被置为Falseapp_cmd/ticker.py避免容器中试图拉起浏览器。4.3 通知渠道相关PushPlus / Bark / ntfyBTB_PUSHPLUSTOKEN、BTB_BARKTOKEN、BTB_NTFY_URL对应抢票成功或代理池耗尽时的三类通知渠道实现在 app_cmd/config/NotifierConfig.py 中分别映射到pushplusToken、barkToken、ntfy_url运行参数。在 Docker 场景下通过环境变量注入这些值可避免每次启动容器后在前端重新填写。4.4 时间同步相关BTB_NTP_SERVERS抢票对时间精度敏感应用启动时会进行 NTP 校时。BTB_NTP_SERVERS为空时使用 util/TimeUtil.py 中定义的默认服务器列表ntp.aliyun.com, ntp.tencent.com, cn.ntp.org.cn, time.cloudflare.com设置该变量时util/init.py 会按逗号拆分并构造自定义TimeUtil实例若网络环境无法访问这些公网 NTP 服务器例如内网部署可以改为内网 NTP 地址。4.5 其他可注入的抢票参数进阶除部署类变量外BTB_*环境变量还可覆盖大量抢票运行参数优先级为CLI 显式参数 环境变量BTB_* 内置默认值该优先级由 main.py 的merge_env与_explicit_cli_flags实现并被 tests/test_buy_env_vars.py 的单元测试覆盖验证。例如环境变量说明默认值BTB_INTERVAL默认请求间隔毫秒1000BTB_HTTPS_PROXYS代理字符串或逗号分隔的代理池noneBTB_PROXY_API_URL代理供应商 API 地址用于补充代理池空BTB_CREATE_RETRY_LIMIT每轮创建订单的最大重试次数见 app_cmd/config/BuyConfig.pyBTB_LOG_LEVEL日志级别预设simple/standard/debugstandardBTB_LOG_RETENTION_DAYS日志文件保留天数7完整字段定义可查阅 app_cmd/config/BuyConfig.py 与 app_cmd/config/NotifierConfig.py。这些变量在「前端暂未配置但希望容器启动即生效」的场景下非常实用。五、更新镜像5.1 docker run 场景更新到最新镜像并重建容器docker pull ghcr.io/mikumifa/bilitickerbuy:latest docker rm -f bilitickerbuy docker run -d \ --name bilitickerbuy \ -p 7860:7860 \ -e BTB_SERVER_NAME0.0.0.0 \ -e GRADIO_SERVER_PORT7860 \ -e GRADIO_NUM_PORTS100 \ -e BTB_CONFIG_PATH/app/data/config.json \ -e BTB_COOKIES_PATH/app/data/cookies.json \ -e BTB_LOG_DIR/app/data/btb_logs \ -v $(pwd)/data:/app/data \ ghcr.io/mikumifa/bilitickerbuy:latest如果希望锁定版本把latest替换为目标版本标签即可例如ghcr.io/mikumifa/bilitickerbuy:v2.15.85.2 docker compose 场景修改compose.yaml中的镜像标签后docker compose pull docker compose up -ddocker compose up -d会基于新拉取的镜像重建容器由于配置、Cookies、日志都挂载在./data卷中升级过程不丢失登录状态与配置。可用版本标签以 GitHub Packages 页面公布为准。六、常见问题排查6.1 无法访问页面按以下顺序排查容器是否正常运行docker ps日志中是否有报错docker logs -f bilitickerbuy宿主机防火墙是否放行7860云服务器安全组是否放行7860。6.2 配置和登录状态丢失未挂载config.json、cookies.json、btb_logs、btb_runs时删除容器后这些内容会一起消失。长期部署请使用docker compose或至少在docker run中加上数据卷挂载见 2.2 节。注意除了文档中明确提到的btb_logs运行任务产生的btb_runs目录同样建议持久化否则任务运行记录也会随容器销毁。6.3 报错IsADirectoryError: /app/config.json这通常意味着把一个目录挂载到了本应是文件的配置路径上。修复步骤删除错误创建的目录重新创建config.json和cookies.json空文件或在首次启动后由程序自动生成改用整目录挂载./data:/app/data把BTB_CONFIG_PATH设置为/app/data/config.json把BTB_COOKIES_PATH设置为/app/data/cookies.json。6.4 报错gradio.exceptions.InvalidPathError这通常说明你把持久化文件放到了/data这类不在 Gradio 默认允许范围内的目录。最直接的修复是把数据目录挂到/app/data——因为/app就是应用当前工作目录且应用会主动把配置、Cookies、日志目录加入 Gradio 的allowed_pathsapp_cmd/ticker.py-e BTB_CONFIG_PATH/app/data/config.json \ -e BTB_COOKIES_PATH/app/data/cookies.json \ -e BTB_LOG_DIR/app/data/btb_logs \ -v $(pwd)/data:/app/data \6.5 想使用其他镜像标签前往 GitHub Packages 页面ghcr.io/mikumifa/bilitickerbuy的对应页面查看当前可用标签然后在docker run或compose.yaml中替换即可。七、总结biliTickerBuy的 Docker 部署本质上只需把握三个要点端口与监听BTB_SERVER_NAME/GRADIO_SERVER_PORT、数据持久化BTB_CONFIG_PATH/BTB_COOKIES_PATH/BTB_LOG_DIR 整目录挂载/app/data、按需注入运行参数通知渠道、代理、NTP 等BTB_*变量。docker compose配合restart: unless-stopped与数据卷是长期稳定运行的推荐方案而docker run则适合快速验证与临时测试。镜像本身已内置中文字体、时区与完整运行环境开箱即用。如需进一步了解本地源码构建、升级机制或更细粒度的配置项可继续阅读仓库内的 docs/installation.md、Dockerfile 与 app_cmd/config/BuyConfig.py。【免费下载链接】biliTickerBuyb站会员购购票辅助工具项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表