coolify-full — deployment pipeline

Every database goes through the same seven steps.

The full sequence, from a user's configuration to a running, healthy container. Three of the seven steps — SSL, Compose generation, and the StartAction pattern itself — are zoomed into below, since each involves a real design decision worth understanding on its own.

Validate Configuration→ Generate SSL Certificates→ Generate Persistent Volumes→ Build Environment Variables→ Generate Docker Compose→ Start Container→ Run Healthcheck

Zoomed In

SSL Subsystem

One CA per server, one leaf certificate per database

Not a fresh CA per deployment. Each server has at most one CA certificate — generated automatically on first use (/data/coolify/ssl/coolify-ca.crt), then reused for every SSL-enabled database on that server. Each database gets its own leaf certificate, signed by that shared CA, written under its own configuration directory. Every engine except ClickHouse integrates with this — see the engine comparison diagram for each one's exact certificate mount path.

Docker Orchestration

One Compose service definition per database

This is the layer directly beneath every StartAction — it turns engine-specific provisioning logic into a runnable container definition.

StartAction Pattern

One dedicated class per database engine

8 engines, 8 StartAction classes (StartMysql, StartMariadb, StartPostgresql, StartRedis, StartKeydb, StartDragonfly, StartMongodb, StartClickhouse) — same shape, real per-engine differences in SSL support, healthcheck probes, and runtime flags.

i

This whole pipeline runs once, top to bottom, for one database. The System Architecture diagram shows where it sits relative to the rest of the app — the Laravel backend that triggers it and the React frontend an operator actually clicks through.