自定义 Compose 覆盖配置
Coolify 以一组 Docker Compose 服务的形式运行。每次升级时,基础的 docker-compose.yml 和 docker-compose.prod.yml 文件会被覆盖为最新版本。对这些文件进行的任何手动编辑都将丢失。
要对 Coolify 自身的容器进行持久化的自定义配置,您可以创建一个自定义覆盖文件,该文件在升级时会自动合并。
工作原理
在以下位置放置一个文件:
/data/coolify/source/docker-compose.custom.yml在启动和升级期间,Coolify 的升级脚本会检查此文件是否存在。如果存在,容器将使用以下命令启动:
docker compose \
-f docker-compose.yml \
-f docker-compose.prod.yml \
-f docker-compose.custom.yml \
up -dDocker Compose 会按顺序合并这些文件——后续文件中的属性会覆盖前面文件中相同的属性。您只需指定要更改的键即可。
如果您使用了内部 PostgreSQL 升级脚本,Coolify 还会创建:
/data/coolify/source/docker-compose.postgres-upgrade.yml当该文件存在时,它将在 docker-compose.custom.yml 之后加载:
docker compose \
-f docker-compose.yml \
-f docker-compose.prod.yml \
-f docker-compose.custom.yml \
-f docker-compose.postgres-upgrade.yml \
up -d这使得 PostgreSQL 升级覆盖配置能够在未来的 Coolify 升级中保持已升级的 PostgreSQL 镜像和 Docker 卷处于活动状态。如果两个文件定义了冲突的 postgres 服务设置,docker-compose.postgres-upgrade.yml 将优先生效,因为它最后加载。
基础文件 (docker-compose.yml 和 docker-compose.prod.yml) 在每次升级时都会重新下载。您的 docker-compose.custom.yml 不会被升级过程触碰,因此您的自定义配置会自动保留。
服务名称
Compose 服务使用以下名称定义——您必须在覆盖文件中使用这些确切的名称:
| 服务名称 | 容器名称 | 描述 |
|---|---|---|
coolify | coolify | 主 Coolify 应用 |
postgres | coolify-db | PostgreSQL 数据库 |
redis | coolify-redis | Redis 缓存 |
soketi | coolify-realtime | WebSocket 服务器 |
示例
添加容器标签
为外部工具(如监控或日志聚合)添加标签:
services:
coolify:
labels:
com.example.monitoring: "true"
com.example.environment: "production"设置资源限制
为主 Coolify 容器限制 CPU 和内存使用:
services:
coolify:
cpus: 2.0
mem_limit: 2G
mem_reservation: 512M有关可用属性的完整列表,请参阅 Docker Compose 文档:cpus、mem_limit、mem_reservation 以及其他资源约束。
更改端口绑定
端口号可以通过 Coolify 的 .env 文件 中的 APP_PORT 变量进行更改。但是,覆盖文件允许您控制端口绑定的方式——这是 .env 无法做到的。
仅将 Coolify UI 绑定到 localhost,使其只能通过反向代理访问:
services:
coolify:
ports:
- "127.0.0.1:8000:8080"或者完全关闭端口并依赖 Docker 网络(当启用 Coolify Proxy 并为其 Coolify 仪表板配置时非常有用):
services:
coolify:
ports: !override []如果您移除或限制端口访问,请确保您有其他访问 Coolify UI 的方式(例如反向代理)。否则您将无法访问系统。
调整数据库配置
添加自定义 PostgreSQL 参数:
services:
postgres:
command: postgres -c max_connections=200 -c shared_buffers=512MB组合多个自定义配置
单个覆盖文件可以修改多个服务:
services:
coolify:
mem_limit: 2G
labels:
com.example.monitoring: "true"
postgres:
mem_limit: 1G
redis:
mem_limit: 256M重要注意事项
格式错误或无效的 docker-compose.custom.yml 可能会阻止 Coolify 启动。在保存文件之前,请务必验证您的 YAML。
您可以通过运行以下命令在不重启的情况下测试您的配置:
cd /data/coolify/source
docker compose \
-f docker-compose.yml \
-f docker-compose.prod.yml \
-f docker-compose.custom.yml \
config如果 /data/coolify/source/docker-compose.postgres-upgrade.yml 存在,也将其包含在内,以便验证 Coolify 将使用的相同文件顺序:
cd /data/coolify/source
docker compose \
-f docker-compose.yml \
-f docker-compose.prod.yml \
-f docker-compose.custom.yml \
-f docker-compose.postgres-upgrade.yml \
config如果输出是有效的合并 YAML 且无错误,则您的文件可以安全使用。
- 服务名称必须完全匹配——使用
coolify、postgres、redis和soketi,而不是容器名称。 - 除非您清楚自己在做什么,否则不要重新定义
image属性——使用不兼容的镜像会导致 Coolify 故障。 - 标量属性会被替换,列表属性会被合并——例如,设置
ports会替换所有端口映射,但volumes条目会被追加。 - 要立即应用更改而无需等待升级,请重新运行升级脚本:
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
