| dockerize_app |
pipeline |
bash |
pipelines |
1.0.0 |
impure |
dockerize_app(app_name: string, [--domain DOMAIN], [--port PORT], [--ssh-host HOST], [--remote-dir DIR], [--basic-auth USER:PASS], [--no-auth], [--no-gzip], [--env KEY=VAL]..., [--volume NAME], [--build-cmd CMD], [--standalone], [--dry-run]) -> json |
Empaqueta una app Go del registry para deploy a VPS organic-machine via Docker + Traefik + Coolify. Genera Dockerfile multi-stage, docker-compose.yml, traefik-dynamic.yml con basicAuth opcional y gzip, sube via rsync al VPS y arranca el stack remoto. Replica el patron de apps/registry_api/. |
| docker |
| traefik |
| coolify |
| deploy |
| pipeline |
| launcher |
|
| generate_dockerfile_go_infra |
| bcrypt_htpasswd_go_infra |
| generate_compose_traefik_go_infra |
| generate_traefik_dynamic_go_infra |
| rsync_deploy_bash_infra |
| docker_compose_remote_deploy_bash_infra |
| health_check_http_go_infra |
| gitea_create_repo_bash_infra |
| gitea_push_directory_bash_infra |
|
| ComposeTraefikConfig_go_infra |
| TraefikDynamicConfig_go_infra |
|
|
false |
error_go_core |
|
| name |
desc |
| app_name |
Nombre o ID parcial de la app en registry.db (ej: kanban, deploy_server). Se busca con LIKE '<app_name>%' OR name='<app_name>'. |
|
| name |
desc |
| domain |
Dominio publico completo para el router Traefik (ej: kanban.organic-machine.com). Obligatorio. |
|
| name |
desc |
| port |
Puerto interno del contenedor Docker (default: 8080). Debe coincidir con el puerto en que la app escucha. |
|
| name |
desc |
| ssh-host |
Alias o IP del host SSH destino (default: organic-machine.com). Debe estar en ~/.ssh/config o ser accesible con key auth. |
|
| name |
desc |
| remote-dir |
Ruta absoluta en el VPS donde se desplegara la app (default: /home/ubuntu/coolify-apps/<app_name>). En modo rsync apunta al subdir de la app dentro del build root. |
|
| name |
desc |
| basic-auth |
Credenciales para basicAuth de Traefik en formato USER:PASS. Obligatorio si auth esta ON (defecto). Se hashea con bcrypt via htpasswd o python3+bcrypt. |
|
| name |
desc |
| no-auth |
Flag para deshabilitar basicAuth. Por defecto auth esta habilitado; se requiere --basic-auth USER:PASS si no se pasa --no-auth. |
|
| name |
desc |
| no-gzip |
Flag para deshabilitar el middleware gzip de Traefik. Por defecto gzip esta habilitado. |
|
| name |
desc |
| env |
Variable de entorno KEY=VAL a incluir en el .env y en la seccion environment del docker-compose.yml. Repetible para multiples vars. |
|
| name |
desc |
| volume |
Nombre de un Docker volume que se monta en /data dentro del contenedor. Se declara en la seccion volumes del compose. |
|
| name |
desc |
| build-cmd |
Comando de build personalizado (documentado para uso futuro; Phase 1 usa el Dockerfile multi-stage generado). |
|
| name |
desc |
| standalone |
Modo standalone: crea repo Gitea dataforge/<app> y usa git clone/pull en el VPS en vez de rsync. Requiere GITEA_URL y credenciales Gitea configuradas. |
|
| name |
desc |
| dry-run |
Imprime los artefactos generados (Dockerfile, docker-compose.yml, traefik-dynamic.yml, .env) a stderr y retorna JSON con status=dry-run sin ejecutar ningun comando remoto ni escribir ficheros en la app. |
|
|
JSON a stdout: {status, app, domain, remote_dir, container_id, duration_seconds, auth_enabled, gzip_enabled, http_code, url}. status='ok' si el health check responde HTTP 200/401, 'failed' si hay timeout, 'dry-run' en modo dry-run. |
false |
|
|
bash/functions/pipelines/dockerize_app.sh |