15 KiB
15 KiB
Compose Anything
Compose Anything 通过提供一组高质量的 Docker Compose 配置文件,帮助用户快速部署各种服务。这些配置约束了资源使用,可快速迁移到 K8S 等系统,并且易于理解和修改。
已经支持的服务
MCP 服务器
| 服务 | 版本 |
|---|---|
| API Gateway | latest |
| ArXiv MCP Server | latest |
| Basic Memory | latest |
| ClickHouse | latest |
| Docker | latest |
| Dockerhub | latest |
| E2B | latest |
| ElevenLabs | latest |
| Fetch | latest |
| Firecrawl | latest |
| Filesystem | latest |
| Grafana | latest |
| Markdownify | latest |
| Markitdown | latest |
| Memory | latest |
| MongoDB | latest |
| Neo4j Cypher | latest |
| Neo4j Memory | latest |
| Notion | latest |
| OpenAPI Schema | latest |
| OpenAPI | latest |
| OpenWeather | latest |
| Paper Search | latest |
| Playwright | latest |
| Redis MCP | latest |
| Rust Filesystem | latest |
| Sequential Thinking | latest |
| SQLite | latest |
| Tavily | latest |
| Text to GraphQL | latest |
| Time | latest |
| Wolfram Alpha | latest |
| YouTube Transcript | latest |
规范
- 开箱即用
- 配置应该是开箱即用的,无需额外步骤即可启动(最多提供
.env文件)。
- 配置应该是开箱即用的,无需额外步骤即可启动(最多提供
- 命令简单
- 每个项目提供单一的
docker-compose.yaml文件; - 命令复杂度不应超过
docker compose up -d;若需要额外流程,请提供Makefile; - 若服务需要初始化,优先使用
healthcheck与depends_on的condition: service_healthy组织启动顺序。
- 每个项目提供单一的
- 版本稳定
- 固定到“最新稳定版”而非
latest; - 通过环境变量暴露镜像版本(如
FOO_VERSION)。
- 固定到“最新稳定版”而非
- 配置约定
- 尽量通过环境变量配置,而非复杂的命令行参数;
- 敏感信息通过环境变量或挂载文件传递,不要硬编码;
- 提供合理默认值,实现零配置可启动;
- 必须提供带注释的
.env.example; - 环境变量命名建议:全大写、下划线分隔,按服务加前缀(如
POSTGRES_*),端口覆写统一用*_PORT_OVERRIDE。
- Profiles 规范
- 对“可选组件/依赖”使用 Profiles;
- 推荐命名:
gpu(GPU 加速)、metrics(可观测性/导出器)、dev(开发特性)。
- 跨平台与架构
- 在镜像支持前提下,确保 Debian 12+/Ubuntu 22.04+、Windows 10+、macOS 12+ 可用;
- 支持 x86-64 与 ARM64 架构尽可能一致;
- 避免依赖仅在 Linux 主机存在的主机路径(例如
/etc/localtime、/etc/timezone),统一使用TZ环境变量传递时区。
- 卷与挂载
- 配置文件优先使用相对路径,增强跨平台兼容;
- 数据目录优先使用“命名卷”,避免主机路径权限/兼容性问题;
- 如需主机路径,建议提供顶层目录变量(如
DATA_DIR)。
- 资源与日志
- 必须限制 CPU/内存,防止资源打爆;
- GPU 服务默认单卡:可使用
deploy.resources.reservations.devices(Compose 支持为 device_requests 映射)或gpus; - 限制日志大小(
json-file:max-size/max-file)。
- 健康检查
- 每个服务应提供
healthcheck,包括合适的interval、timeout、retries与start_period; - 依赖链通过
depends_on.condition: service_healthy组织。
- 每个服务应提供
- 安全基线(能用则用)
- 以非 root 运行(提供
PUID/PGID或直接user: "1000:1000"); - 只读根文件系统(
read_only: true),必要目录使用tmpfs/可写挂载; - 最小权限:
cap_drop: ["ALL"],按需再cap_add; - 避免使用
container_name(影响可扩缩与复用网络别名); - 如需暴露 Docker 套接字等高危挂载,必须在文档中明确“风险与替代方案”。
- 以非 root 运行(提供
- 文档与可发现性
- 提供清晰文档与示例(含初始化与管理员账号说明、必要的安全/许可说明);
- 提供对 LLM 友好的结构化文档;
- 在 README 中标注主要环境变量与默认端口,并链接到
README.md/README.zh.md。