Detente de escribir comandos docker run — usa Docker Compose en su lugar
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.
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 run | clave en docker-compose.yml | Ejemplo |
|---|---|---|
-p 8080:80 | ports: | - "8080:80" |
-e FOO=bar | environment: | FOO: bar |
-v ./data:/data | volumes: | - ./data:/data |
--network mynet | networks: | mynet |
--restart always | restart: | always |
--name mycontainer | container_name: | mycontainer |
--memory 512m | mem_limit: | 512m |
--cpus 1.5 | deploy.resources.limits.cpus | cpus: "1.5" |
-d | Usa -d bandera en tiempo de ejecución | docker 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.
También te puede interesar
Instalar extensiones
Agregue herramientas IO a su navegador favorito para obtener acceso instantáneo y búsquedas más rápidas
恵 ¡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!
Herramientas clave
Ver todo Los recién llegados
Ver todoActualizar: Nuestro última herramienta se agregó el 22 abr 2026
