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>
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
package infra
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// StopApp para y elimina el contenedor de una app desplegada.
|
||||
// Si removeImage es true, elimina también la imagen Docker asociada.
|
||||
// containerName debe coincidir con el nombre usado en DeployApp (= imageName).
|
||||
func StopApp(containerName string, removeImage bool) error {
|
||||
// 1. Detener el contenedor (timeout 10s)
|
||||
if err := DockerStopContainer(containerName, 10); err != nil {
|
||||
return fmt.Errorf("stop_app: detener contenedor %s: %w", containerName, err)
|
||||
}
|
||||
|
||||
// 2. Eliminar el contenedor
|
||||
if err := DockerRemoveContainer(containerName, false); err != nil {
|
||||
return fmt.Errorf("stop_app: eliminar contenedor %s: %w", containerName, err)
|
||||
}
|
||||
|
||||
// 3. Eliminar la imagen si se solicita
|
||||
if removeImage {
|
||||
imageName := containerName + ":latest"
|
||||
if err := DockerRemoveImage(imageName, false); err != nil {
|
||||
return fmt.Errorf("stop_app: eliminar imagen %s: %w", imageName, err)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user