向 Coolify 添加新服务模板
Coolify 中的服务是由普通 docker-compose 文件和一些 Coolify 魔法组成的模板。
重要
服务的 Git 仓库必须至少有 1,000 个星,才能作为一键服务添加到 Coolify。
请参阅 Coolify 的 docker-compose 规范,了解更多关于 Coolify 的魔法以及如何利用生成的变量和存储处理。请在提交 PR 时使用这些魔法,以使合并过程更顺畅。
-
添加元数据
在
docker-compose文件的顶部,添加以下元数据:# documentation: https://docs.example.com/ # slogan: 服务的简要描述 # category: 一个词,宽泛的应用类型 # tags: tag1,tag2,tag3 # logo: svgs/your-service.svg # port: 1234documentation: 服务官方文档的链接slogan: 服务的简短描述category: 一个词的宽泛应用类型tags: 用于提高可搜索性的逗号分隔列表logo: 服务徽标的文件路径(见步骤 3)port: 服务的主要入口点端口
注意
始终指定端口,因为 Caddy 代理无法自动确定服务的端口。
-
创建 docker-compose 文件
在元数据下方,添加您的 docker-compose 配置。在此处使用 Coolify 的环境变量魔法 here。
示例:
services: app: image: your-service-image:tag environment: - DATABASE_URL=${COOLIFY_DATABASE_URL} volumes: - ${COOLIFY_VOLUME_APP}:/data使用必需的环境变量: 在创建服务模板时,将关键配置标记为必需,以改善用户体验:
services: app: image: your-service:latest environment: # Required - critical configuration that must be set by the user - DATABASE_URL=${DATABASE_URL:?} - API_KEY=${API_KEY:?} # Required with sensible defaults - improves usability - PORT=${PORT:?8080} - LOG_LEVEL=${LOG_LEVEL:?info} # Optional - features that can be left empty - DEBUG=${DEBUG:-false} - CACHE_TTL=${CACHE_TTL:-3600}这有助于用户了解哪些配置是必需的,并防止部署失败。
-
添加徽标
- 为您的服务创建或获取 SVG 徽标(强烈推荐的格式)
- 如果无法使用 SVG,则最后使用高质量的 .webp 或 JPG
- 将徽标文件添加到 Coolify 仓库中的
svgs文件夹 - 徽标文件名必须与 docker-compose 服务名称完全匹配
- 例如,如果您的服务名称是
wordpress,则您的徽标应为wordpress.svg,最终路径为svgs/wordpress.svg,在logo元数据中使用此路径。
- 例如,如果您的服务名称是
-
测试您的模板
在 Coolify 中使用
Docker Compose Empty部署选项来测试您的模板。此过程模拟了一键服务部署。 -
提交拉取请求
一旦您的模板正常工作:
- 打开 PR
- 在
/templates/compose下添加您的新<service>.yamlcompose 文件 - 在
svgs文件夹中包含徽标文件
Coolify 使用模板的 解析版本 进行部署。
向 Coolify 文档添加新服务模板
一旦您的服务模板合并到 Coolify 中,在 Coolify 文档中添加其文档也很重要。 在 Coolify 文档贡献部分 中,我们解释了如何贡献并在自己的 PC 上运行文档。
服务列表是如何构建的
服务概述页面和 所有服务 目录是 自动生成 的,来自 docs/services/ 中每个 markdown 文件的前元数据。您 不再需要 手动编辑 List.vue 或 all.md。生成器作为 bun run dev、bun run build 和 bun run preview 的一部分运行。
scripts/generate-service-list.mjs→ 写入src/generated/services.json(被服务概述组件消耗)scripts/generate-services-page.mjs→ 写入docs/services/all.md- 两个脚本共享
scripts/services-data.mjs,它解析每个服务的前元数据并从docs/public/images/services/解析其徽标
一旦您准备好本地设置,请按照以下步骤添加您的新服务:
-
在
/docs/public/images/services/下添加服务徽标- 使用与您的服务 slug 相同的基名,例如
my-service.svg或my-service-logo.svg。图标解析器尝试<slug>-logo、<slug>_logo、<slug>logo,然后是裸<slug>,然后是标题的相同变体。 - 首选 SVG;否则 WebP,然后 PNG。避免对徽标使用 JPEG。
- 使用与您的服务 slug 相同的基名,例如
-
创建文档文件
创建
/docs/services/<service-slug>.md。slug 必须是小写且连字符分隔的,并且必须与文件名匹配。使用此前元数据:--- title: "服务名称" description: "出现在服务卡片和搜索结果中的简短描述。" og: description: "SEO/社交卡片描述(可选,比 `description` 更长)。" category: "分析" icon: "/docs/images/services/service-name-logo.svg" ---字段 必需 备注 title是 卡片上显示的显示名称 description是 用作卡片描述并在 all.md中使用category是 确定服务在 all.md中出现的标题以及概述中的过滤器icon可选 仅在自动解析无法找到您的徽标时设置 og.description可选 用于社交/SEO 元标签的较长描述 disabled可选 设置为 true以从列表中隐藏服务,同时保持通过直接 URL 可访问 -
编写文档
在前元数据下开始编写您的文档。使用以下模板作为起点:
# 服务名称  ## 什么是服务名称? 简要描述和使用案例。 ## 链接 - [官方网站](https://example.com?utm_source=coolify.io) - [GitHub](https://github.com/example/repo?utm_source=coolify.io)仅对受益于可缩放视图的截图使用
<ZoomImage>,而不是用于徽标。 -
重新生成列表(可选 — 在
dev/build上自动发生)bun run generate:services这将刷新
src/generated/services.json和docs/services/all.md。将两个重新生成的文件与您的新服务页面一起提交。 -
提交拉取请求
- 目标分支为
next - 使用
bun run dev验证服务是否正确渲染,包括列表卡片、过滤器类别和/services/all中的条目
- 目标分支为
请求新服务
如果您希望在 Coolify 中看到某个服务模板:
- 在 GitHub 讨论 中搜索现有请求。
- 如果该服务已被请求,请为其投票。如果没有,请创建新请求。
