Files
fn_registry/functions/infra/generate_compose_traefik.md
T
egutierrez 750b7abcd5 chore: auto-commit (97 archivos)
- .claude/CLAUDE.md
- .claude/agents/fn-recopilador/SKILL.md
- .claude/rules/INDEX.md
- .claude/rules/cpp_apps.md
- bash/functions/infra/build_cpp_windows.sh
- cpp/CMakeLists.txt
- cpp/PATTERNS.md
- cpp/framework/app_base.cpp
- cpp/framework/app_base.h
- dev/issues/README.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 18:11:24 +02:00

1.9 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
generate_compose_traefik function go infra 1.0.0 pure func GenerateComposeTraefik(cfg ComposeTraefikConfig) string Genera el texto YAML de un docker-compose.yml para una app Go desplegada behind Traefik + Coolify. Replica el patron de apps/registry_api/docker-compose.yml. Determinista: orden de EnvVars sigue el orden de entrada.
docker
compose
traefik
coolify
yaml
infra
deploy
generator
ComposeTraefikConfig_go_infra
false
fmt
strings
name desc
cfg configuracion del compose: nombre de proyecto/servicio, contexto de build, puerto, volume, env vars y red de Coolify
texto YAML completo del docker-compose.yml listo para escribir a disco true
render con volume y multiples envs
render sin volume
render sin envs
project name con guion
snapshot YAML completo replica patron registry_api
functions/infra/generate_compose_traefik_test.go functions/infra/generate_compose_traefik.go

Ejemplo

cfg := ComposeTraefikConfig{
    ProjectName:  "kanban",
    ServiceName:  "kanban",
    BuildContext: "../../",
    Dockerfile:   "apps/kanban/Dockerfile",
    Port:         8421,
    VolumeName:   "kanban_data",
    EnvVars:      []string{"KANBAN_TOKEN"},
    Network:      "coolify",
}
yaml := GenerateComposeTraefik(cfg)
os.WriteFile("apps/kanban/docker-compose.yml", []byte(yaml), 0644)

Notas

Funcion pura: dado el mismo ComposeTraefikConfig siempre produce el mismo YAML. Si VolumeName es "" se omite la seccion volumes: y el mount. Si EnvVars es nil/vacio se omite la seccion environment:. Los env vars se generan con la sintaxis ${KEY:-} (passthrough con fallback vacio) para que el contenedor arranque sin el .env si la variable no es critica.