Moving from Coolify.
Your compose file imports as it is written, SERVICE_* names included.
Connect a server
Install the agent. It connects out to the panel.
Import
In the repository, run
yawl compose import. Read the notes, then run it again with--apply.Move the data
Restore a dump into each database, then
yawl deploy.
services:
app:
build: .
environment:
- APP_URL=${SERVICE_URL_APP_3000}
- SECRET_KEY=${SERVICE_BASE64_64_APP}
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/shop
- REDIS_URL=redis://redis:6379
depends_on: [postgres, redis]
postgres:
image: postgres:16
volumes:
- pg-data:/var/lib/postgresql/data
redis:
image: redis:7$ yawl compose import --server hel1 Added app (web). Added postgres (postgres). Added redis (valkey). Note: postgres: the data in volume pg-data is not moved; restore a dump into postgres once it runs. Note: depends_on is ignored; Yawl starts each service on its own. Note: app SECRET_KEY is generated only with --apply; or set your own with yawl env set. Wrote yawl.yaml. Next: yawl apply, then set the variables: yawl env set app DATABASE_URL --ref postgres.url yawl env set app REDIS_URL --ref redis.url yawl env set app SECRET_KEY
What becomes what
| Area | Compose | In Yawl |
|---|---|---|
| Services | Database images | postgres, mysql, mariadb, mongo, redis and valkey become Yawl databases, backed up nightly. |
build: | Built from the repository's origin, on the current branch. | |
image: | Runs that image. | |
ports: | A web service with its own address and TLS. Without ports, a worker. | |
| Settings | environment: env_file: | Variables. A URL that names a database service becomes a reference, like postgres.url. |
| Named volumes | Yawl volumes at the same path. | |
| Coolify names | SERVICE_PASSWORD_* SERVICE_USER_* SERVICE_BASE64_* SERVICE_HEX_* | Made on your machine and sealed with --apply. Never printed. One name has one value in every service. |
SERVICE_URL_* SERVICE_FQDN_* | Make the service a web service on that port, filled with its Yawl address. | |
| Not carried | Data in volumes | Restore a dump into the new database once it runs. |
| Database passwords | Yawl makes its own. Apps get the database's url. | |
| Bind mounts | Skipped. A server's folders are not your machine's. | |
depends_on healthcheck networks command restart | Left out, each named once in the notes. |