Files
fn_registry/functions/infra/deploy_app.md
T
egutierrez 90693fb32f feat: funciones infra — Docker, deploy, build y health check
Funciones impuras para gestión de contenedores: docker_build_image,
docker_compose_up/down, docker_volume_create/list/remove,
generate_dockerfile, write_dockerfile, go_build_binary, health_check_http,
deploy_app y stop_app. Todas con tests unitarios donde aplica.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 14:24:12 +02:00

44 lines
1.4 KiB
Markdown

---
name: deploy_app
kind: pipeline
lang: go
domain: infra
version: "1.0.0"
purity: impure
signature: "func DeployApp(appDir string, imageName string, port int, envVars map[string]string) (string, error)"
description: "Orquesta el deploy completo de una app Go en Docker. Pasos: genera Dockerfile, lo escribe a disco, construye la imagen y lanza el contenedor en modo detach con port mapping. Retorna el container ID."
tags: [docker, deploy, go, pipeline, infra, container]
uses_functions: [generate_dockerfile_go_infra, write_dockerfile_go_infra, docker_build_image_go_infra, docker_run_container_go_infra]
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt]
tested: false
tests: []
test_file_path: ""
file_path: "functions/infra/deploy_app.go"
---
## Ejemplo
```go
containerID, err := DeployApp(
"/home/user/apps/myapp",
"myapp",
8080,
map[string]string{
"DB_HOST": "postgres",
"PORT": "8080",
},
)
if err != nil {
log.Fatal(err)
}
fmt.Println("Contenedor lanzado:", containerID)
```
## Notas
Pipeline de 4 pasos: generate_dockerfile (pura) → write_dockerfile → docker_build_image → docker_run_container. El nombre del contenedor e imagen coinciden con imageName. El port mapping es simetrico (hostPort == containerPort). Si cualquier paso falla, el pipeline retorna error con contexto del paso fallido. No hace rollback automatico — para limpiar usar stop_app.