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.yamland oftencompose.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.