Qué es docker-compose.yml, en un párrafo
Un service es un contenedor, y un fichero `docker-compose.yml` es una lista de servicios que deben ejecutarse juntos (tu app, una base de datos, quizá una caché y un reverse proxy). Un comando, `docker compose up`, arranca el stack entero y otro, `docker compose down`, lo lleva de vuelta a cero. Es la forma estándar de ejecutar apps multi-contenedor en una única máquina: portátiles de dev, servidores de prod en un nodo, runners CI.
Este generador escribe ese fichero por ti. Elige un preset (WordPress + MySQL, Node + Postgres + Redis, Nginx + PHP-FPM + MariaDB, un solo Redis, un solo ClickHouse), edita servicios en formularios planos y el panel derecho muestra el YAML exacto listo para pegar en `docker-compose.yml`. Cada opción lleva una pista en lenguaje claro.
Todo corre en tu navegador. No se sube nada, no hace falta cuenta, no se arranca ningún contenedor aquí: la salida es el mismo texto que escribirías a mano.
Cómo usarlo
- Elige un preset arriba (WordPress + MySQL, Node + Postgres + Redis, Nginx + PHP-FPM + MariaDB, Redis solo, ClickHouse single-node). El formulario rellena valores sensatos por defecto que puedes ajustar.
- Pon un nombre de proyecto arriba. Se convierte en el campo `name:` del fichero y el prefijo para los nombres de contenedor (adiós a nombres aleatorios como `miapp_web_1`).
- Para cada service configura: image (p. ej. `nginx:alpine`), ports (host:container, repetible), volumes (con un toggle de solo lectura) y variables environment.
- Elige una política de restart: `no`, `always`, `on-failure` o `unless-stopped`. Para servidores en producción, `unless-stopped` es la elección habitual.
- Usa depends_on para decir "arranca la base de datos antes de la app". Añade un healthcheck en la base de datos para que otros servicios puedan esperar a "listo", no solo a "iniciado".
- Define networks a nivel superior y asigna cada servicio a una o más. Los servicios en la misma red se alcanzan por nombre (p. ej. `db:5432`).
- Pulsa Copiar en el panel de previsualización, o Descargar para guardar como `docker-compose.yml`, luego ejecuta `docker compose up -d` en la misma carpeta. Ese es el flujo completo.
Cuándo es útil
Siete situaciones concretas en las que docker-compose hace la vida mucho más fácil:
- Un portátil de dev que necesita Postgres, Redis y tu app Node. Un fichero, un `docker compose up` y todo tu stack está online. Sin Homebrew, sin apt-get, sin deriva de versiones entre el equipo.
- Un VPS pequeño alojando una o dos apps. Compose es el camino más simple: escribe el fichero, `docker compose up -d`, monta nginx delante, listo. Kubernetes es excesivo para una caja.
- Espejo local de producción. Si prod corre Postgres 16, Redis 7 y Node 20, el mismo fichero compose fija esas versiones en cada máquina de dev. "Funciona en mi portátil" se convierte en "funciona en cada portátil".
- Pipelines CI que necesitan servicios reales. Compose levanta un Postgres real para pruebas de integración en segundos, luego lo derriba. Mucho más cercano a prod que mocks o sqlite.
- Auto-alojar apps de terceros: WordPress, Ghost, Mastodon, NextCloud, Plausible, Gitea, n8n. El fichero compose oficial suele ser la ruta de instalación documentada.
- Levantar un stack para una demo. Entregas un repo con un fichero y el revisor teclea un comando. Sin "primero instala Postgres 14 con estas extensiones".
- Probar una base de datos nueva. ¿Quieres jugar con ClickHouse, MongoDB o DuckDB sin instalar nada global? `docker compose up` durante cinco minutos, luego `docker compose down -v` y la máquina vuelve a estar limpia.