Docker
每个 OpenASR 核心版本发布时,都会同步推送运行镜像到
Docker Hub。镜像里只有 CLI
二进制和已签名的 model-registry 元数据——不包含模型权重。请在运行时把模型
安装到挂载在 /data 的卷上(即容器内的 OPENASR_HOME)。
镜像直接组装自 GitHub Release 里的预编译包(不会在 Docker 里再编一遍),因此 容器内的二进制与对应 release 标签逐字节一致。
| 标签形式 | 内容 | 平台 |
|---|---|---|
latest、<version>、sha-<short> | CPU 二进制(linux-x86_64 / linux-arm64) | linux/amd64、linux/arm64 |
cuda-latest、cuda-<version>、cuda-sha-<short> | CUDA 二进制(linux-x86_64-cuda) | 仅 linux/amd64 |
把 <version> 换成已发布的核心版本(见
GitHub Releases)。生产环境
建议钉死版本标签;只有在你明确要跟随最新核心版时,才使用 latest /
cuda-latest。
目前没有做成镜像的变体(请直接在宿主机使用 GitHub Release 压缩包): Vulkan、ROCm、musl。它们对宿主机驱动或 C 库的要求,与这里使用的精简 Debian / CUDA runtime 基座不一致。
快速开始(CPU)
Section titled “快速开始(CPU)”docker pull quintinshaw/openasr:latest
docker run --rm -d --name openasr \ -p 8080:8080 \ -v openasr-data:/data \ quintinshaw/openasr:latest默认命令是 serve --addr 0.0.0.0:8080。健康检查:
curl -s http://127.0.0.1:8080/healthNVIDIA GPU(CUDA)
Section titled “NVIDIA GPU(CUDA)”宿主机需要安装 NVIDIA Container Toolkit, 驱动需兼容 CUDA 13.2,GPU 计算能力需 sm_75(Turing)及以上。
docker pull quintinshaw/openasr:cuda-latest
docker run --rm -d --name openasr-cuda \ --gpus all \ -p 8080:8080 \ -v openasr-data:/data \ quintinshaw/openasr:cuda-latestCUDA 镜像在 GPU 可见性上是失败即停的:如果容器内看不到 GPU 设备
(openasr doctor 没有报告 (gpu, …)),入口脚本会直接退出,而不会悄悄改走
CPU。常见原因是没加 --gpus、没装 Container Toolkit,或宿主机驱动不匹配。
安装模型(转写前必须做)
Section titled “安装模型(转写前必须做)”HTTP 服务不会为了满足一次请求去下载模型——这与直接在机器上跑
openasr serve 的约定相同。请显式把模型拉进数据卷:
# 已有名为 openasr 的容器docker exec -it openasr openasr pull whisper-small --yes
# 或对同一命名卷做一次性拉取docker run --rm -v openasr-data:/data quintinshaw/openasr:latest \ pull whisper-small --yes在非交互环境(没有 TTY)里必须加 --yes。查看已安装模型:
docker exec openasr openasr list然后调用兼容 OpenAI 的转写接口:
curl -s http://127.0.0.1:8080/v1/audio/transcriptions \ -F model=whisper-small \ -F response_format=json完整路由表、鉴权模式与 TLS 说明见本地服务 API 参考。
| 容器内路径 | 作用 |
|---|---|
/data(OPENASR_HOME) | 已安装的 .oasr 包、配置、历史记录、声纹注册等 |
请始终给 /data 挂卷(或 bind mount)。不挂的话,每次新容器都是空的,模型
要重新下载。
在镜像里直接跑 CLI
Section titled “在镜像里直接跑 CLI”入口就是 openasr 二进制,因此任意子命令都可以用:
docker run --rm -v openasr-data:/data -v "$PWD:/work" -w /work \ quintinshaw/openasr:latest \ transcribe audio.wav --model whisper-small --offline若模型尚未安装,--offline 会直接失败——请先按上文拉取。麦克风 / 系统音频
采集依赖宿主机环境;容器场景主要面向文件转写和本地 HTTP API。
环境变量与网络
Section titled “环境变量与网络”| 变量 / 设置 | 镜像默认值 | 说明 |
|---|---|---|
OPENASR_HOME | /data | 数据卷挂这里 |
OPENASR_ALLOW_INSECURE_NON_LOOPBACK | 1 | 允许容器内 serve 监听 0.0.0.0。对外是否暴露仍由你的 -p、编排和防火墙决定。在不可信网络前请加 TLS(或由代理终止 TLS)。 |
| 暴露端口 | 8080 | 用 -p 8080:8080 映射 |
远程访问(配对鉴权、自签 TLS 等)可通过 docker run … <flags> 传入
openasr serve 参数,详见本地服务 API 参考。除上述回环
监听放宽外,镜像不会放宽其他失败即停默认行为。
Compose(本地源码构建)
Section titled “Compose(本地源码构建)”仓库里的
compose.yaml
用于开发时的源码构建(Dockerfile / Dockerfile.cuda)。正式发布走 Docker Hub
镜像;compose 仍适合本地改代码和冒烟:
git clone --recurse-submodules https://github.com/QuintinShaw/openasr.gitcd openasrdocker compose up openasr # CPU,源码构建docker compose --profile gpu up openasr-cuda每次核心版 GitHub Release 完成后,在配置了 DOCKER_PAT 密钥的前提下,CI 会
自动组装并推送上表中的 CPU 多架构与 CUDA 标签到 quintinshaw/openasr。Docker
任务失败不会回滚 GitHub Release 资产。需要手动重推时:
gh workflow run docker-release.yml \ -R QuintinShaw/openasr \ -f version=<version> -f push=true -f mark_latest=true -f variants=all- CLI 快速上手 — 在宿主机直接安装二进制
- 本地服务 API 参考 — 完整 HTTP 接口
- 配置参考 —
OPENASR_HOME目录结构 - 模型目录 — 拉取前先选好模型
- 上游 README 的 Docker 小节: github.com/QuintinShaw/openasr