Apps multi-servicio (estilo compose)

Una app puede correr varios contenedores — ej. un frontend web más un cache o una base de datos internos. Es la versión de la plataforma de un stack de Compose: 1 app = N servicios, pero cuenta como una unidad en tu cuota.

Reglas

  • Pasás un array services (al menos uno).
  • Exactamente uno debe ser public: true — ese se queda con el dominio HTTPS de la app.
  • Los servicios internos (public:false) no se exponen a internet. Viven en una red privada por-app y son alcanzables por los otros servicios por su name (ej. http://cache:6379).
  • Cada servicio puede usar su propia image, o buildear desde un repo compartido a nivel app.
  • repo / branch / repoToken quedan a nivel app (un repo para el stack); port / env / cpu / memory / secrets son por servicio.

Ejemplo — web público + redis interno

curl -s -X POST $API/deploy \
  -H "authorization: Bearer $TOKEN" -H 'content-type: application/json' \
  -d '{
    "name": "shop",
    "services": [
      { "name": "web",   "image": "acme/storefront:1.0", "port": 8080, "public": true,
        "env": { "REDIS_URL": "redis://cache:6379" } },
      { "name": "cache", "image": "redis:7-alpine",      "port": 6379, "public": false }
    ]
  }'
  • https://shop.cynchro.cloud → el contenedor web.
  • web alcanza a cache por la red privada en redis://cache:6379.
  • cache es invisible desde internet.

Campos de cada servicio

Campo Requerido Notas
name DNS-safe; también es el hostname interno.
image ✅* Imagen prearmada, O omitir para buildear desde el repo a nivel app.
dockerfile / context   Cuando buildea desde repo (rutas relativas).
port   Default 80. Puerto donde escucha el servicio.
public   true para el único servicio expuesto a internet.
domain   Override del hostname del servicio público.
cpu / memory   Límites por servicio.
env   Env por servicio (cifrado at-rest).
envFrom / secretFiles   Referencias a Secrets por servicio.

* Cada servicio necesita su propia image o un repo a nivel app para buildear.

Buildear todos los servicios desde un repo

-d '{
  "name": "stack",
  "repo": "https://github.com/acme/monorepo",
  "services": [
    { "name":"api", "dockerfile":"api/Dockerfile",  "context":"api",  "port":3000, "public":true },
    { "name":"worker", "dockerfile":"worker/Dockerfile", "context":"worker", "port":0, "public":false }
  ]
}'

El repo se clona una vez y cada servicio se buildea desde su propio Dockerfile.

Ciclo de vida

Restart / stop / delete actúan sobre toda la app (todos sus contenedores). Borrarla también destruye la red privada. El self-healing vigila cada contenedor — si alguno cae, se redesplega la app.

→ Volver a lo básico: Desplegar desde Git · Inyectar config: Secrets


This site uses Just the Docs, a documentation theme for Jekyll.