Saltar al contenido
ToolMug

De docker run a Docker Compose

Pega uno o varios comandos docker run para obtener el compose.yaml equivalente. Se convierten puertos, volúmenes, variables de entorno, redes, política de reinicio, límites de memoria y CPU, logging y healthchecks, y se listan los flags que no se pueden convertir para que los añadas a mano.

Funciona en tu navegador: nada de lo que introduces se sube

docker run → Docker Compose
docker run
Docker Compose

Cómo se usa

  1. Pega los comandos docker run a la izquierda. Funcionan los comandos multilínea con barra invertida al final; separa varios comandos con saltos de línea, punto y coma o &&.
  2. El archivo Compose aparece a la derecha. Cada comando se convierte en un servicio con el nombre de --name, o el de la imagen si no hay ninguno.
  3. Revisa la nota en amarillo con lo que no se convirtió, y luego copia o descarga compose.yaml y ejecuta docker compose up -d.

Opciones explicadas

Flags admitidos
-p, -v, --mount, -e, --env-file, --name, --restart, --network, -w, -u, -h, --entrypoint, -l, --add-host, --dns, --cap-add/drop, --device, -m, --cpus, --shm-size, --ulimit, --log-driver/--log-opt, --health-*, -i, -t, --privileged, --init, --read-only y más.
Volúmenes y redes con nombre
Los volúmenes con nombre (como pgdata:/data) se declaran en el volumes de nivel superior. Las redes personalizadas se declaran como external true, es decir, se usa una red ya existente. Las redes host y none se convierten en network_mode.
Puertos
Los mapeos de puertos siempre se ponen entre comillas. YAML 1.1 interpreta valores como 22:22 como números en base 60, y la documentación de Docker recomienda escribir los puertos como cadenas de texto.
Flags ignorados
-d y --rm no tienen equivalente en Compose y se descartan. Los flags no admitidos, como --gpus, se listan en la nota.

Ejemplo

docker run -d --name web --restart unless-stopped -p 8080:80 \
  -v ./html:/usr/share/nginx/html:ro -e TZ=Asia/Shanghai --memory 512m nginx:1.27

se convierte en:

services:
  web:
    image: nginx:1.27
    container_name: web
    restart: unless-stopped
    mem_limit: 512m
    ports:
      - "8080:80"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./html:/usr/share/nginx/html:ro

Preguntas frecuentes

¿El archivo necesita una línea de version?

No. La versión actual de Docker Compose (v2) ya no usa la clave version de nivel superior; si está presente, se ignora con un aviso.

¿Se suben las contraseñas de mis variables de entorno?

No. El análisis y la conversión se ejecutan en tu navegador y no se envía nada a un servidor.

¿Admite argumentos entre comillas?

Sí. Las comillas simples, las comillas dobles y los escapes con barra invertida siguen las reglas de la shell, así que -e "MSG=hello world" conserva el valor completo.

Privacidad

Esta herramienta funciona por completo en tu navegador. Tus archivos y textos se procesan en tu dispositivo y nunca se suben a nuestros servidores.

Herramientas relacionadas