Documentation Menu

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 use image: for everything else
  • network_mode: host
  • Privileged containers / capabilities
  • restart: no (everything is unless-stopped)
  • macvlan / ipvlan networks

Importing

/tools/deployNew projectCompose 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.