¿Odias los anuncios? Ir Sin publicidad Hoy

Detente de escribir comandos docker run — usa Docker Compose en su lugar

Publicado el

La mayoría de los comandos docker run se convierten en una masa de flags difícil de mantener. Este guía muestra cómo convertir docker run a docker compose — con una tabla de referencia de flags, un ejemplo real de conversión y una herramienta gratuita de conversión.

Deja de escribir comandos de docker run — Usa Docker Compose en su lugar 1
ANUNCIO · ¿ELIMINAR?

Cada flujo de trabajo de Docker comienza de la misma manera: docker run. Una bandera, dos banderas — manejable. Pero cuando ejecutas un contenedor con puertos, variables de entorno, volúmenes, políticas de reinicio y una red personalizada, ese comando llega a 400 caracteres de algo que nadie puede recordar, control de versiones, ni delegar a un compañero sin un hilo de Slack lleno de vergüenza.

Docker Compose es la solución. Un archivo YAML reemplaza toda la orden — y lo commits a git.

Por qué docker run deja de escalar

Aquí tienes un ejemplo típico docker run de orden para una aplicación en Node.js:

docker run -d \
  --name my-app \
  -p 3000:3000 \
  -e NODE_ENV=production \
  -e DATABASE_URL=postgres://user:pass@db:5432/mydb \
  -v ./data:/app/data \
  --network app-network \
  --restart always \
  my-app:latest

Funciona. Solo una vez. Luego cierras la terminal, abres una nueva tres semanas después y no tienes idea de qué banderas usaste. No hay nada para git diff. No hay nada que compartir con un nuevo empleado. Ninguna forma de verificar que el entorno de pruebas coincida con producción.

Qué ofrece Docker Compose

Docker Compose toma todo lo que estaba en esa docker run orden y lo coloca en un archivo YAML llamado docker-compose.yml. Ese archivo:

  • Vive en tu repositorio junto a tu código
  • Se ejecuta con un solo docker compose up -d
  • Se ejecuta de forma idéntica en cada máquina y entorno
  • Se escala a configuraciones multiv servicio (aplicación + base de datos + caché) sin necesidad de ejercicios con banderas

Cómo convertir una orden de docker run

Esa misma orden anterior se convierte en esta docker-compose.yml:

version: "3.9"
services:
  my-app:
    image: my-app:latest
    container_name: my-app
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: production
      DATABASE_URL: postgres://user:pass@db:5432/mydb
    volumes:
      - ./data:/app/data
    networks:
      - app-network
    restart: always

networks:
  app-network:

Mismo comportamiento. Pero ahora es legible, se puede commiter y es reproducible.

Inicia:

docker compose up -d

Detén:

docker compose down

Banderas de docker run a claves de docker-compose.yml

Una referencia para las banderas que usarás con más frecuencia:

bandera de docker runclave en docker-compose.ymlEjemplo
-p 8080:80ports:- "8080:80"
-e FOO=barenvironment:FOO: bar
-v ./data:/datavolumes:- ./data:/data
--network mynetnetworks:mynet
--restart alwaysrestart:always
--name mycontainercontainer_name:mycontainer
--memory 512mmem_limit:512m
--cpus 1.5deploy.resources.limits.cpuscpus: "1.5"
-dUsa -d bandera en tiempo de ejecucióndocker compose up -d

Convertir automáticamente

Si tienes un comando largo existente docker run — especialmente uno heredado de un README o de un script de CI que nadie ha tocado en dos años — no necesitas mapear cada bandera manualmente. Usa el Convertidor de Docker Run a Compose: pega el comando, obtén un resultado válido docker-compose.yml .

Maneja puertos, variables de entorno, volúmenes, redes, políticas de reinicio y más. Útil para migrar comandos antiguos sin introducir errores durante la conversión.

Si estás configurando límites de recursos en tu archivo de Compose, el Calculadora de Recursos de Contenedores Docker te ayuda a elegir valores razonables de memoria y CPU basados en tu carga de trabajo — antes de cometer números que sacaste del aire.

Revisar tu Dockerfile mientras lo haces

Una vez que tu archivo de Compose esté organizado, revisa el Dockerfile de donde se construye. Imágenes base sin pin, faltantes WORKDIR, capas redundantes RUN — estos errores son fáciles de pasar por alto y molestos de depurar más adelante. El Dockerfile Linter los detecta antes de que se conviertan en problemas en producción.

¿Quieres eliminar publicidad? Adiós publicidad hoy

Instalar extensiones

Agregue herramientas IO a su navegador favorito para obtener acceso instantáneo y búsquedas más rápidas

añadir Extensión de Chrome añadir Extensión de borde añadir Extensión de Firefox añadir Extensión de Opera

¡El marcador ha llegado!

Marcador es una forma divertida de llevar un registro de tus juegos, todos los datos se almacenan en tu navegador. ¡Próximamente habrá más funciones!

ANUNCIO · ¿ELIMINAR?
ANUNCIO · ¿ELIMINAR?
ANUNCIO · ¿ELIMINAR?

Noticias Aspectos técnicos clave

Involucrarse

Ayúdanos a seguir brindando valiosas herramientas gratuitas

Invítame a un café
ANUNCIO · ¿ELIMINAR?