Shimmy 容器化部署完全指南:基于 Docker Compose 的 GGUF 推理服务搭建、配置与故障排查 人工智能大模型模型推理服务本地部署后端【免费下载链接】shimmy⚡ Pure-Rust WebGPU inference engine — OpenAI-API compatible, GGUF native, runs on any GPU. No Python. No llama.cpp. Single binary.项目地址https://gitcode.com/gh_mirrors/shimmy/shimmy点击查看免费下载导读本文以 README-DOCKER.md 为核心完整讲解 Shimmy——一个纯 Rust 实现、支持 WebGPU 推理、OpenAI API 兼容、原生加载 GGUF 模型的单二进制推理引擎——在 Docker 与 Docker Compose 环境下的部署全流程。读完本文你将掌握从零挂载模型目录到启动服务、验证 OpenAI 兼容 API 的完整操作链路SHIMMY_*系列环境变量的真实作用与底层实现NVIDIA GPU 直通配置以及多模型自动发现、镜像自构建、生产级反向代理加固等进阶方案。部署形态概览仓库根目录提供了两套开箱即用的容器化资产根级 docker-compose.yml面向本地快速启动默认拉取ghcr.io/michael-a-kuykendall/shimmy:latest预构建镜像一条命令即可运行根级 Dockerfile多阶段构建脚本用于从源码编译属于自己的镜像另有 deploy/ 目录下的 deploy/Dockerfile、deploy/docker-compose.yml 与 deploy/nginx.conf面向云端/生产部署内置非 root 用户、健康检查与 Nginx 反向代理。无论哪种形态核心思路一致把本地模型目录挂载进容器其余交给 Shimmy 自动发现与加载。快速开始四步拉起一个推理服务第一步创建模型目录mkdir modelsShimmy 的模型自动发现模块默认把./models作为首个搜索路径见 src/auto_discovery/mod.rs 中ModelAutoDiscovery::new()的实现因此这一目录就是容器的模型仓库。第二步下载 GGUF 模型以下载微软 Phi-3-mini 的 Q4 量化版为例curl -L https://huggingface.co/microsoft/Phi-3-mini-4k-instruct-gguf/resolve/main/Phi-3-mini-4k-instruct-q4.gguf -o models/phi-3-mini.gguf注意仓库镜像约定模型文件为.gguf格式safetensors 与 LoRA 亦受支持见 src/main.rs 中对SHIMMY_LORA_GGUF的处理。下载时请确保目标模型存在对应的 GGUF 量化文件。第三步启动容器docker-compose up -d启动后Shimmy 容器内的shimmy serve进程会监听 11434 端口并从挂载的/app/models目录自动发现全部.gguf模型。第四步验证 APIcurl http://localhost:11434/v1/models若返回模型列表 JSON即表示部署成功。该端点与后续的聊天补全、文本补全、健康检查端点均在 src/server.rs 中注册路由定义位于 src/server.rs 的route(...)调用处。环境变量配置项与源码级解析README-DOCKER 给出三个核心环境变量容器镜像 Dockerfile 也通过ENV指令设置了对应默认值变量默认值说明SHIMMY_PORT11434服务监听端口SHIMMY_HOST0.0.0.0监听地址0.0.0.0表示容器内所有网络接口供外部访问SHIMMY_BASE_GGUF/app/models模型基准目录结合源码这三个变量有更精确的底层语义SHIMMY_BASE_GGUF决定模型注册与发现在 src/main.rs 中若显式设置了该变量则会把其指向的路径注册为默认模型条目在 src/auto_discovery/mod.rs 中该变量的父目录会被追加进自动发现搜索路径例如设置/app/models时/app也会进入扫描范围便于兼容 Ollama 风格的目录结构。因此把模型放进/app/models下任意子目录均可被自动发现。端口与地址的实际解析从源码结构看SHIMMY_PORT/SHIMMY_HOST是镜像层约定EXPOSE 11434ENV而运行时更通用的控制入口是shimmy serve命令的--bind参数与SHIMMY_BIND_ADDRESS环境变量见 src/cli.rs 的Serve子命令定义与 src/port_manager.rs 的地址解析逻辑支持auto、127.0.0.1:11435、0.0.0.0:8080等形式。容器内通过-p 11434:11434做端口映射宿主机端口号可以自由调整。除上述三者外docker-compose.yml 还给出了 TurboShimmy 系列进阶变量注释形式展示按需取消注释environment: - SHIMMY_BASE_GGUF/app/models # 指向挂载的模型目录 - SHIMMY_PORT11434 # 服务端口 - SHIMMY_HOST0.0.0.0 # 监听所有网卡 # TurboShimmy v2.1 — 削减 KV cache 显存约 60%推荐 4 GB 显存 GPU 使用 # - SHIMMY_KV_QUANTint4 # 启用 INT4 KV 量化 # - SHIMMY_PREFILL_CHUNK8 # 调小预填充分块防止长提示词下 Windows TDR 崩溃 # - SHIMMY_MAX_CTX4096 # 覆盖最大上下文长度默认取 GGUF 原生上下文这些变量的底层行为在 src/main.rs 中可见CLI 的--kv-quant int4、--prefill-chunk N、--ctx N参数会被写入对应的SHIMMY_*环境变量交由 Airframe 引擎读取从而实现CLI 参数优先、环境变量兜底的双通道配置。例如SHIMMY_KV_QUANTint4对应 KV 缓存从f32全精度切换为 INT4 量化src/cli.rs 中kv_quant参数的取值限定为f32/int4默认f32SHIMMY_MAX_CTX则被 src/model_registry.rs 读取并做上下文窗口校验。日志级别可通过RUST_LOG如RUST_LOGdebug控制src/main.rs 使用tracing_subscriber按环境变量过滤日志输出。数据卷与模型持久化根级 docker-compose.yml 声明了两个卷volumes: - ./models:/app/models # 挂载本地模型目录 - shimmy-cache:/root/.cache # 下载缓存持久化./models:/app/models把宿主机models/目录与容器内/app/models绑定模型文件改动即时对容器内生效shimmy-cache:/root/.cache命名卷持久化 HuggingFace Hub 下载缓存仓库在 src/main.rs 的启动诊断中提示过~/.cache/huggingface/hub/目录会被纳入模型搜索范围避免容器重建后重复下载。若在云端部署且模型只读可参考 deploy/docker-compose.yml 使用只读挂载./models:/app/models:ro进一步降低误写风险。GPU 支持NVIDIA 显卡直通前置条件来自 README-DOCKER宿主机已安装 NVIDIA Container ToolkitDocker Compose 版本 ≥ 2.3且支持 GPU 资源预留。根级 docker-compose.yml 已内置 GPU 配置无需额外改动deploy: resources: reservations: devices: - driver: nvidia # GPU 支持可选 count: all capabilities: [gpu]启动前可用以下命令验证宿主机 GPU 运行时是否就绪docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi docker-compose config # 验证 Compose 解析后的 GPU 配置注意deploy.resources段在docker-compose up非 swarm 模式下即可生效若在旧版 Docker 上使用可改用--gpus all运行参数。Shimmy 的推理后端选择在 src/cli.rs 中通过--gpu-backendauto/cpu/cuda/vulkan/opencl控制默认auto会自动探测可用 GPU。日常运维日志、停止与自定义覆盖基础运维命令# 启动服务 docker-compose up -d # 跟踪日志 docker-compose logs -f shimmy # 停止服务 docker-compose down自定义端口与环境override 文件通过docker-compose.override.yml覆盖默认配置无需改动原文件# docker-compose.override.yml services: shimmy: ports: - 8080:11434 # 宿主机 8080 → 容器 11434 environment: - SHIMMY_PORT11434 - SHIMMY_LOG_LEVELdebug说明容器内SHIMMY_PORT需保持与EXPOSE 11434一致宿主机的对外端口由ports左侧数值决定。多模型自动发现Shimmy 会自动扫描挂载目录下的全部.gguf模型目录结构示例如下models/ ├── phi-3-mini.gguf ├── llama-2-7b.gguf └── mistral-7b.gguf自动发现的实现位于 src/auto_discovery/mod.rsDiscoveredModel结构体会记录名称、路径、大小、模型类型、参数量、量化格式等元数据。除了默认的./modelsSHIMMY_BASE_GGUF的父目录与SHIMMY_MODEL_PATHS分号分隔的额外目录列表可经--model-dirs全局 CLI 参数注入见 src/main.rs也会被纳入扫描。因此放入容器models/子目录、Ollama 风格目录中的模型都能被自动发现并直接通过 API 调用。API 端点速查容器启动后即提供 OpenAI 兼容接口路由注册见 src/server.rs方法路径用途GET/v1/models列出可用模型POST/v1/chat/completions聊天补全POST/v1/completions文本补全GET/health健康检查同时承载指标此外 src/server.rs 还注册了/metrics监控指标、/diag诊断信息以及/api/generate、/api/models、/api/models/discover等内部端点可用于运维观测。验证示例curl http://localhost:11434/v1/models curl http://localhost:11434/health故障排查手册容器无法启动# 查看日志 docker-compose logs shimmy # 检查端口是否被占用 netstat -tulpn | grep 11434若端口被占用改用-p 8080:11434映射或调整SHIMMY_BIND_ADDRESS。模型无法加载# 确认模型目录已挂载进容器 docker-compose exec shimmy ls -la /app/models # 检查宿主机目录权限 ls -la models/同时确认模型文件名以.gguf结尾且文件完整可先执行docker-compose exec shimmy shimmy list或shimmy discover查看自动发现结果这两个子命令在 src/cli.rs 中有定义。GPU 未被识别# 验证 NVIDIA runtime 可用 docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi # 检查 Compose 中的 GPU 配置是否解析成功 docker-compose config若容器内 GPU 不可见请确认 NVIDIA Container Toolkit 安装正确且 Docker 守护进程配置了nvidiaruntime。从源码构建自定义镜像标准构建仓库根目录# 构建镜像 docker build -t shimmy:local . # 在 docker-compose.yml 中使用本地镜像 # 替换image: ghcr.io/michael-a-kuykendall/shimmy:latest # 改为image: shimmy:local根级 Dockerfile 采用多阶段构建构建阶段基于rust:1.85-slim安装pkg-config、libssl-dev、build-essential、libclang-dev、cmake等编译依赖随后cargo build --release --features airframe,huggingface编译出带 Airframe GPU 引擎与 HuggingFace 下载能力的 release 二进制运行阶段基于debian:bookworm-slim仅安装ca-certificates、libssl3运行时依赖把编译产物复制到/usr/local/bin/shimmy创建/app/models目录EXPOSE 11434并预设SHIMMY_PORT/SHIMMY_HOST/SHIMMY_BASE_GGUF三个环境变量最终以CMD [shimmy, serve]启动。面向生产的云端构建deploy 变体若目标是云端部署可改用 deploy/Dockerfile它以rust:slim构建、以debian:trixie-slim作为运行基础glibc 2.39与构建器 glibc 版本匹配创建非 root 用户shimmy并以该用户运行EXPOSE 11435内置HEALTHCHECK每 30 秒探测http://localhost:11435/health启动命令为shimmy serve --bind 0.0.0.0:11435。对应编排见 deploy/docker-compose.yml其中包含健康检查配置并可通过profiles: [production]激活 Nginx 反向代理服务。生产加固Nginx 反向代理deploy/nginx.conf 提供了可选的 Nginx 配置适用于需要对外暴露 HTTP/HTTPS 的正式环境包含upstream shimmy指向容器服务名shimmy:11434基于limit_req_zone的限流默认 10 r/sburst 20WebSocket 升级头支持供流式补全使用proxy_http_version 1.1Upgrade/Connection头针对大模型推理放宽的超时设置proxy_read_timeout 300s等独立的/health路由关闭访问日志。启用方式在 deploy/docker-compose.yml 中为nginx服务挂载 deploy/nginx.conf并以docker-compose --profile production up -d启动。小结通过本文你可以完整掌握 Shimmy 的容器化部署链路用mkdir modelscurl准备模型、用docker-compose up -d一键启动、用curl http://localhost:11434/v1/models验证服务同时理解了SHIMMY_BASE_GGUF等环境变量在 src/main.rs、src/auto_discovery/mod.rs 中的真实作用掌握了 TurboShimmy 的SHIMMY_KV_QUANT/SHIMMY_PREFILL_CHUNK/SHIMMY_MAX_CTX调优变量、NVIDIA GPU 直通配置、多模型自动发现机制以及基于 Dockerfile 自构建镜像与基于 deploy/ 生产化部署非 root 用户 健康检查 Nginx 反代的进阶方案。更多细节可参考 README.md 与 docs/CONFIGURATION.md。赞分享人工智能大模型模型推理服务本地部署后端【免费下载链接】shimmy⚡ Pure-Rust WebGPU inference engine — OpenAI-API compatible, GGUF native, runs on any GPU. No Python. No llama.cpp. Single binary.项目地址https://gitcode.com/gh_mirrors/shimmy/shimmy点击查看免费下载相关推荐wkhtmltopdf容器化部署Docker Compose多服务配置全指南wkhtmltopdf容器化部署Docker Compose多服务配置全指南 你是否还在为wkhtmltopdf环境依赖冲突、多实例部署复杂而烦恼本文将带你CLIPrisma 1.12 MySQL 数据库连接器完全指南docker-compose 配置、CLI 部署与故障排查Prisma 1.12 MySQL 数据库连接器完全指南docker compose 配置、CLI 部署与故障排查 本指南以 docs/1.12/04 Ref后端数据库GraphQLllama.cpp Docker部署容器化推理服务搭建llama.cpp Docker部署容器化推理服务搭建 概述 llama.cpp是Facebook LLaMA模型的C/C移植版本提供了高效的本地推理能人工智能大模型模型推理服务推理引擎本地部署后端上一篇Repomix 实战用例指南从 AI 代码审查到安全审计的完整工作流下一篇Zulip 客户端标识机制解析Client 模型、User-Agent 处理与 Webhook 集成规范创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考