Skip to content

Deployment Guide

This repository uses a split-structure for managing deployments via Komodo.

Architecture

  • stacks/: Contains the actual service definitions.

    • This is the "Source of Truth" for what containers run.
    • Organized by category: stacks/<category>/<service>/.
    • Contains compose.yaml and often compose.env.
  • komodo/stacks/: Contains the deployment configurations.

    • These are TOML files that tell Komodo how and where to deploy a stack.
    • They point exclusively to the files in stacks/.

Workflow: Adding a New Service

To deploy a new service, follow these two steps:

1. Define the Stack

Create a directory in stacks/<category>/<service_name>/ and add a compose.yaml.

# stacks/applications/my-app/compose.yaml
services:
  app:
    image: my-app:latest
    ports:
      - "8080:80"
    env_file:
      - compose.env

2. Configure Deployment (Manual)

Create a Komodo TOML file at komodo/stacks/{category}/{service_name}.toml. Copy from an existing stack as template:

[[stack]]
name = "service-name"
deploy = true
tags = ["server:unraid", "category:{category}"]

[stack.config]
server = "unraid"
poll_for_updates = false
auto_update = true
destroy_before_deploy = true
auto_update_all_services = false
linked_repo = "docker-compose"
run_directory = "/etc/komodo/repos/docker-compose/stacks/{category}/{service}/"
file_paths = ["compose.yaml"]
environment = """
TZ=Asia/Ho_Chi_Minh
"""

See deployment-guide.md for full instructions including tags, environment, and deploy commands.

CI/CD: Custom Docker images are built via Komodo Build resources (not GitHub Actions). See README.md for the build workflow.