Docker Compose
Komodo can deploy Docker Compose projects through the Stack resource.
Configuration
[[stack]]
name = "my-stack"
[stack.config]
server = "server-prod"
run_directory = "/opt/stacks/my-stack"
file_paths = ["compose.yaml"]
git_account = "my-user"
repo = "myorg/stacks"
environment = """
DB_HOST = db.example.com
LOG_LEVEL = info
"""
Config fields
| Field | Description | Default |
|---|---|---|
server | The Server to deploy on. | — |
file_paths | List of compose files. Supports composing multiple files via docker compose -f ... -f .... | [] |
run_directory | Working directory for compose commands. | — |
project_name | Override the compose project name. Defaults to the Stack name. | Stack name |
environment | Environment variables written to a .env file and passed via --env-file. Supports variable interpolation. | "" |
extra_args | Additional flags passed to docker compose up. | "" |
ignore_services | Services to exclude from health checks (e.g. init containers that exit after startup). | [] |
git_provider | Git provider domain. | github.com |
git_account | Git provider account for private repos. | — |
repo | Repository in owner/repo format. | — |
branch | Branch to clone. | main |
auto_update | Automatically redeploy when newer image digests are available. | false |
poll_for_updates | Check for newer images and show an update indicator. | false |
send_alerts | Send alerts on stack state changes. | true |
links | Quick links displayed in the resource header. | [] |
Defining Compose Files
Stacks support three ways to provide compose files:
- Write in the UI — Komodo writes the files to the host at deploy time.
- Files on the host — Point to existing files on the server.
- Git repo — Komodo clones the repo onto the host to deploy. Changes are tracked in git and you can use webhooks to auto-redeploy on push.
Importing Existing Projects
To import a running compose project, create a Stack in Komodo with access to the same compose files and attach the correct Server. Komodo matches projects by compose project name — if the running project name differs from the Stack name, set a custom project_name in the config. Run docker compose ls on the host to find existing project names.
Deploying to a Swarm
A Stack can target a Swarm instead of a single Server to deploy via docker stack deploy. See Swarm for details.