Importing a docker-compose.yml
Multi-service stacks from a compose file.
If your app is more than one container, you can import a
docker-compose.yml and Suzko will provision the whole stack.
What works
- Multiple services with
depends_on - Named volumes
- Environment variables (including
${VAR}substitution from a.env) - Internal networks (we create one automatically for each stack)
ports(we route the first HTTP port via Traefik)
What doesn't (yet)
build:from inline Dockerfile — point us at a Git repo for the app service and useimage:for everything elsenetwork_mode: host- Privileged containers / capabilities
restart: no(everything isunless-stopped)- macvlan / ipvlan networks
Importing
/tools/deploy → New project → Compose import → paste or upload the file. Suzko validates, shows you the parsed plan, you confirm.
Example: app + Postgres + Redis
services:
web:
image: ghcr.io/me/myapp:latest
ports:
- "3000:3000"
environment:
DATABASE_URL: postgres://app:${DB_PASS}@db:5432/app
REDIS_URL: redis://redis:6379
depends_on:
- db
- redis
db:
image: postgres:16
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: ${DB_PASS}
POSTGRES_DB: app
volumes:
- dbdata:/var/lib/postgresql/data
redis:
image: redis:7-alpine
volumes:
dbdata:
Suzko provisions all three, networks them, sets up Traefik for the
web service (port 3000).
When to use compose vs attached services
- Single service + a DB — simpler to use a basic project with an attached Postgres.
- Multiple custom services + custom DBs — compose import wins.
- Standard stack you've already built locally with compose — import is the fastest path.