Generador de Docker Compose

Escribir un docker-compose.yml a mano significa recordar la indentación exacta, poner entre comillas cada mapeo de puertos y saber qué cadena de versión entiende tu binario de Compose. Este generador te permite definir servicios con campos sencillos: un nombre, una imagen, mapeos de puertos host:contenedor y volúmenes. Genera un archivo YAML válido con la especificación moderna de Compose (sin clave de versión) y valores predeterminados sensatos.

Cómo construir un archivo Compose

  1. 1

    Agregar servicios

    Indica un nombre, una imagen, los mapeos de puertos host:contenedor y los volúmenes de cada servicio. Ya hay dos servicios de ejemplo rellenados.

  2. 2

    Ajustar o quitar filas

    Edita cualquier campo directamente, añade otro servicio con el botón + Service o elimina la fila que no necesites.

  3. 3

    Revisar el YAML generado

    La vista previa se actualiza mientras escribes: los mapeos de puertos van entre comillas y se omite la clave de versión, tal como espera la especificación moderna de Compose.

  4. 4

    Copiar el archivo

    Copia el docker-compose.yml generado y pégalo en la raíz de tu proyecto.

La especificación moderna de Compose

Compose V2 (el complemento incluido con Docker Desktop y el motor Docker moderno) sigue la Especificación de Compose. La clave version: está obsoleta; el generador la omite. Las claves de nivel superior son services, networks, volumes, configs y secrets.

Anatomía del servicio

Un servicio orientado a producción se ve así:

services:
  web:
    image: nginx:1.27-alpine
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./public:/usr/share/nginx/html:ro
    depends_on:
      app:
        condition: service_healthy
    networks:
      - frontend
      - backend
    healthcheck:
      test: ["CMD", "wget", "--spider", "-q", "http://localhost/health"]
      interval: 30s
      timeout: 5s
      retries: 3

Volúmenes: montaje por enlace vs nombrado

  • Montaje por enlace (./app:/var/www) vincula el contenedor a una ruta en el host; excelente para el desarrollo local porque los cambios se reflejan de inmediato.
  • Volumen nombrado (pgdata:/var/lib/postgresql/data) es gestionado por Docker y persiste independientemente de cualquier ruta del host; la elección correcta para bases de datos y cualquier cosa que no quieras eliminar accidentalmente con rm -rf.
  • Volumen anónimo - evitar. Sobrevive a los reinicios pero desaparece en docker compose down -v sin advertencia.

Redes

Por defecto, Compose crea una red nombrada según el proyecto y conecta cada servicio a ella. Declarar redes explícitas es útil cuando:

  • Quieres aislar una base de datos de un servicio expuesto al público.
  • Necesitas un puente con una subred personalizada para alinearte con la infraestructura existente.
  • Quieres adjuntar contenedores a una red externa preexistente (external: true).

Errores comunes que conviene evitar

  • Conflictos de clave de versión. version: "3.8" en la parte superior impide que funciones más nuevas como start_interval de healthcheck funcionen en Compose antiguo; el generador omite la clave de versión.
  • Citas de puertos. 8080:80 se analiza como YAML base-60 en algunos casos extremos; el generador siempre pone entre comillas los mapeos de puertos.
  • Secretos codificados. Los secretos escritos directamente en compose.yml acaban comprometidos en git. Guárdalos en un env_file o en el gestor de secretos de la plataforma.
  • depends_on sin condición. depends_on: [db] simple espera a que el contenedor se inicie, no a que el servicio esté listo. Usa condition: service_healthy y añade un healthcheck a la dependencia.

Preguntas frecuentes

La Especificación de Compose actual (alineada con Docker Compose V2). El archivo omite la clave version:, que es como se escriben los archivos de Compose modernos. Funciona con Docker Compose V2.22 y versiones posteriores.

No a través del formulario en esta versión. El generador se centra en definiciones de servicios con imagen, puertos y volúmenes. Puedes añadir redes, variables de entorno, health checks y otras claves al YAML generado a mano antes de usarlo.

No, esta herramienta se centra en compose.yml. Para Dockerfiles, usa el Generador de Dockerfile, que gestiona la elección de la imagen base y el orden de COPY/RUN para cinco tecnologías.

No. Las definiciones de servicios solo se usan para construir el YAML en esta página. No se almacenan, no se suben ni se comparten.

Herramientas relacionadas

Herramienta disponible en otros idiomas