What you need
You need an app described by a docker-compose.yml — typically a web service, maybe a background worker, and backing services like a database and Redis — and a cdn.com.tr account. You will not run a Kubernetes cluster, manage a database server, or wire up TLS by hand. cdn.com.tr reads your compose file and maps each part to a managed piece: application services become container apps, and stateful services like Postgres, MySQL or Redis become managed add-ons that are backed up and injected into your apps as environment variables.
How your compose file is mapped
The idea is simple: everything that serves traffic or runs code becomes a container app, and everything that stores data becomes a managed add-on. A 'web' service becomes an app with a domain; a 'worker' becomes an app with no public port; a 'db' using a Postgres or MySQL image becomes a managed database; a 'redis' service becomes managed Redis. Your services keep talking to each other by name, and the connection details for the managed add-ons are provided to your apps automatically — so you delete the risky, self-hosted database container and let the platform run it.
A sample compose file
Here is a small multi-service app: a web API, a background worker, a Postgres database and Redis. Commit it to your repository as docker-compose.yml.
docker-compose.yml
services:
web:
build: .
ports:
- "8000:8000"
environment:
DATABASE_URL: postgres://app:secret@db:5432/app
REDIS_URL: redis://redis:6379
depends_on: [db, redis]
worker:
build: .
command: ["python", "worker.py"]
depends_on: [db, redis]
db:
image: postgres:16
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: secret
POSTGRES_DB: app
redis:
image: redis:7
Preview the plan first
Before changing anything, ask cdn.com.tr what it would create. The preview reads your compose file and shows the plan: which services become container apps, which become managed add-ons, and how they connect. Nothing is created yet — you just see what will happen.
cdnctl login
cdnctl accounts use <account_uuid>
cdnctl container compose preview --file docker-compose.yml
# web, worker -> container apps
# db -> managed database (postgres)
# redis -> managed redis
Apply it
Happy with the plan? Apply it. cdn.com.tr creates the container apps and add-ons, wires the connection strings into your apps, and starts everything. You can also do this from the panel — import the compose file, review the plan, and confirm — but a single command keeps it in your CI or a script.
cdnctl container compose apply --file docker-compose.yml --yes
# then, anytime:
cdnctl container apps list
cdnctl container apps logs --app <web_app_uuid> --tail 100
Domain, HTTPS and the edge
Point your domain at the web app and cdn.com.tr issues and renews SSL automatically. Your services now run as managed apps behind the CDN edge, with a WAF in front and traffic spikes absorbed at the edge; the database and Redis are managed and backed up. To ship an update, rebuild your image and apply again — a bad build keeps the previous version serving. You get a multi-service production deployment without operating a cluster or a database underneath it.
Good fits
Apps with a web tier, background workers and a database map cleanly to apps plus managed add-ons.
Already have a working docker-compose.yml? Import it as-is instead of rebuilding your deployment from scratch.
Preview shows exactly what will change before anything runs — safe to use from CI or a script.
Docker Compose deploy FAQ
Does it run docker-compose as-is on a VM?
No — it converts your compose file into managed resources: services become container apps and stateful services become managed add-ons. That means no VM to patch and a database that is backed up and operated for you, while your app keeps the same shape.
What happens to my database and Redis services?
A Postgres, MySQL or Redis service is turned into a managed add-on. The container from your compose file is not run as-is; instead the managed add-on provides the connection details to your apps as environment variables.
Can I see what will happen before applying?
Yes. 'cdnctl container compose preview' shows the full plan — which services become apps, which become add-ons, and how they connect — without creating anything. Apply only when the plan looks right.