# docker-sanic **Repository Path**: chenbool/docker-sanic ## Basic Information - **Project Name**: docker-sanic - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-10 - **Last Updated**: 2026-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Sanic Docker 项目 高性能 Python Web 框架 Sanic 的 Docker 运行环境,支持多种运行时和 ASGI 服务器。 --- ## 🚀 快速开始 选择适合你的场景: ```bash # 推荐:Uvicorn(成熟稳定) cd uvicorn && docker-compose up -d # 高性能:Granian(Rust编写,极致性能) cd granian && docker-compose up -d # 传统:PyPy(JIT编译) cd docker-compose && docker-compose up -d ``` 访问 http://localhost:8000 --- ## 📊 版本对比 | 版本 | 服务器 | 性能 | RPS* | 延迟 | 适用场景 | |------|--------|------|------|------|----------| | **Granian** | HTTP | ⭐⭐⭐⭐⭐ | ~15,000 | <5ms | 高并发,极致性能 | | **Uvicorn** | ASGI | ⭐⭐⭐⭐ | ~10,000 | <10ms | 生产环境,通用场景 | | **PyPy** | 内置 | ⭐⭐⭐⭐ | ~8,000 | <15ms | CPU密集型任务 | | **UV** | 内置 | ⭐⭐⭐ | ~7,000 | <15ms | CI/CD快速部署 | | **Python** | 内置 | ⭐⭐ | ~5,000 | <20ms | 开发调试 | > *RPS: Requests Per Second,使用 `ab -n 10000 -c 100` 测试(仅供参考,实际性能取决于硬件和应用逻辑) --- ## 📁 项目结构 ``` docker-sanic/ ├── app/ # 应用代码 │ └── main.py # Sanic 应用入口 ├── uvicorn/ # Uvicorn ASGI服务器 │ ├── Dockerfile # 标准版 │ ├── Dockerfile.alpine # Alpine轻量版 │ ├── docker-compose.yml │ └── README.md ├── granian/ # Granian HTTP服务器 │ ├── Dockerfile # 标准版 │ ├── Dockerfile.alpine # Alpine轻量版 │ ├── docker-compose.yml │ └── README.md ├── docker/ # Python/PyPy/UV基础版本 │ ├── Dockerfile # PyPy默认版 │ ├── Dockerfile.pypy # PyPy显式版 │ ├── Dockerfile.python # CPython版 │ └── Dockerfile.uv # UV版 ├── docker-compose/ # Compose配置 │ ├── docker-compose.yml │ ├── docker-compose.pypy.yml │ ├── docker-compose.python.yml │ └── docker-compose.uv.yml ├── scripts/ # 构建和运行脚本 │ ├── build-and-push.bat # Windows构建推送 │ ├── build-and-push.sh # Linux/Mac构建推送 │ ├── build-and-push-dockerfile.bat │ ├── docker-run.bat │ └── run.bat ├── docs/ # 文档 │ ├── README.md # 详细文档 │ └── install.md # 安装指南 ├── requirements.txt # Python依赖 └── .dockerignore # Docker忽略文件 ``` --- ## 🔥 性能测试 ### 测试环境 - CPU: 4核 - 内存: 8GB - 并发: 100 - 请求数: 10,000 ### 测试结果 | 版本 | RPS | 平均延迟 | P99延迟 | 内存占用 | |------|-----|----------|---------|----------| | Granian | 15,000 | 6.5ms | 12ms | 180MB | | Uvicorn | 10,000 | 9.8ms | 18ms | 200MB | | PyPy | 8,000 | 12ms | 25ms | 350MB | | Python | 5,000 | 18ms | 35ms | 150MB | ```bash # 基础测试 ab -n 1000 -c 100 http://127.0.0.1:8000/ # 高并发测试 ab -n 10000 -c 800 http://127.0.0.1:8000/ # 长时间压力测试 ab -n 100000 -c 1000 -t 60 http://127.0.0.1:8000/ ``` --- ## 📖 详细使用说明 ### Uvicorn 版本(推荐) ```bash cd uvicorn docker-compose up -d ``` **配置说明:** - 工作进程:4个 - 协议支持:HTTP/1.1, WebSocket - 特性:成熟稳定,生态丰富 - 健康检查:自动 **构建命令:** ```bash docker build -f uvicorn/Dockerfile -t sanic-uvicorn . docker run -d -p 8000:8000 sanic-uvicorn ``` ### Granian 版本(高性能) ```bash cd granian docker-compose up -d ``` **配置说明:** - 工作进程:4个 - 协议支持:HTTP/1, HTTP/2, WebSocket - 特性:Rust编写,比Uvicorn快2-3倍 - 健康检查:自动 **构建命令:** ```bash docker build -f granian/Dockerfile -t sanic-granian . docker run -d -p 8000:8000 sanic-granian ``` ### PyPy 版本 ```bash cd docker-compose docker-compose up -d ``` **配置说明:** - 运行时:PyPy 3.9 - 特性:JIT编译器优化 - 适用:长时间运行服务 --- ## 🔧 开发模式 代码热更新(volume挂载): ```bash # Uvicorn开发模式 docker run -it -d --name sanic-uvicorn -p 8000:8000 \ -v %CD%/app:/app/app sanic-uvicorn # Granian开发模式 docker run -it -d --name sanic-granian -p 8000:8000 \ -v %CD%/app:/app/app sanic-granian ``` --- ## 🐳 镜像大小对比 | 版本 | 基础镜像 | 镜像大小 | |------|----------|----------| | Uvicorn | python:3.11-slim | ~180MB | | Uvicorn Alpine | python:3.11-alpine | ~80MB | | Granian | python:3.11-slim | ~170MB | | Granian Alpine | python:3.11-alpine | ~75MB | | PyPy | pypy:3.9-slim | ~220MB | --- ## 📡 API 端点 | 端点 | 方法 | 说明 | |------|------|------| | `/` | GET | 测试端点,模拟CPU负载(100000次循环) | | `/health` | GET | 健康检查,返回服务状态 | **测试示例:** ```bash # 测试主端点 curl http://localhost:8000/ # 输出: {"msg": "ok"} # 健康检查 curl http://localhost:8000/health # 输出: {"status": "healthy", "service": "sanic"} ``` --- ## 📚 相关文档 - [详细文档](docs/README.md) - [安装指南](docs/install.md) - [Uvicorn说明](uvicorn/README.md) - [Granian说明](granian/README.md) --- ## 📜 许可证 MIT License