Coolify logoCoolify

自定义 Compose 覆盖配置

Coolify 以一组 Docker Compose 服务的形式运行。每次升级时,基础的 docker-compose.ymldocker-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 -d

Docker 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.ymldocker-compose.prod.yml) 在每次升级时都会重新下载。您的 docker-compose.custom.yml 不会被升级过程触碰,因此您的自定义配置会自动保留。

服务名称

Compose 服务使用以下名称定义——您必须在覆盖文件中使用这些确切的名称:

服务名称容器名称描述
coolifycoolify主 Coolify 应用
postgrescoolify-dbPostgreSQL 数据库
rediscoolify-redisRedis 缓存
soketicoolify-realtimeWebSocket 服务器

示例

添加容器标签

为外部工具(如监控或日志聚合)添加标签:

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 文档:cpusmem_limitmem_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 且无错误,则您的文件可以安全使用。

  • 服务名称必须完全匹配——使用 coolifypostgresredissoketi,而不是容器名称。
  • 除非您清楚自己在做什么,否则不要重新定义 image 属性——使用不兼容的镜像会导致 Coolify 故障。
  • 标量属性会被替换,列表属性会被合并——例如,设置 ports 会替换所有端口映射,但 volumes 条目会被追加。
  • 要立即应用更改而无需等待升级,请重新运行升级脚本:
    curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash

On this page