Docker run a Compose
Convierte un comando docker run en un archivo docker-compose.yml listo para usar.
Cargando Docker run a Compose… Si no ocurre nada, activa JavaScript.
La mayoría de los proyectos empiezan con una línea docker run copiada de un README y acaban siendo un muro de opciones que nadie quiere volver a escribir. Pega ese comando aquí y esta herramienta lo reescribe como un fichero docker-compose.yml, asociando cada opción reconocida a la clave correspondiente de Compose: -p pasa a ports, -v pasa a volumes, -e pasa a environment, --restart pasa a restart, y así con unas setenta opciones, incluidas las comprobaciones de salud, los límites de recursos, los controladores de registro, las capacidades, los ulimits y las reservas de GPU.
Preguntas frecuentes
¿Se envía mi comando docker run a algún servidor?
¿Qué opciones de docker run admite?
¿Por qué no aparece -d en el fichero generado?
¿Necesito la clave version al principio del fichero?
¿Qué ocurre con los volúmenes y las redes con nombre?
¿Puedo convertir más de un contenedor a la vez?
¿Por qué se escriben los puertos entre comillas?
¿Entiende --mount y las comprobaciones de salud?
¿Cómo ejecuto el fichero una vez generado?
Acerca de Docker run a Compose
El conversor lee el comando como lo haría un intérprete de comandos. Las continuaciones de línea con barra invertida, las comillas simples y dobles, las opciones cortas con el valor pegado como -p8080:80, las opciones agrupadas como -itd y la forma --opcion=valor se tratan todas, así que puedes pegar un comando tal cual aparece en la documentación, sin limpiarlo antes. Pega varios comandos, uno por línea o unidos con &&, y cada uno se convierte en un servicio del mismo fichero. Los volúmenes y las redes con nombre que usan esos servicios se recogen y se declaran en las secciones volumes y networks de nivel superior, y los puertos se escriben entre comillas para que un valor como 22:22 no se interprete como un número sexagesimal por el analizador de YAML.
Las opciones que solo tienen sentido al arrancar un contenedor no encajan en un fichero Compose, y la herramienta te lo dice en lugar de descartarlas en silencio: -d se sustituye por docker compose up -d, --rm por docker compose down, y opciones como --cidfile o --detach-keys aparecen en las Notas con una explicación breve. Todo se ejecuta en tu navegador, sin llamadas al servidor y sin bibliotecas externas, de modo que los comandos con contraseñas, nombres de registros privados o nombres internos de imágenes nunca salen de la página. Copia el resultado o descárgalo como docker-compose.yml y ejecuta docker compose up -d en esa misma carpeta.
Compose empezó llamándose Fig
Antes de Docker Compose existió Fig, una pequeña herramienta en Python publicada en 2013 por Orchard Laboratories. Fig introdujo la idea de que una aplicación con varios contenedores debía describirse en un único fichero YAML y arrancarse con un solo comando, en una época en la que lo normal era un script de shell lleno de líneas docker run. Docker compró Orchard en 2014 y Fig pasó a llamarse docker-compose al año siguiente, conservando el formato del fichero casi sin cambios.
Después el formato vivió una década de cambios. La versión 1 ni siquiera tenía claves de nivel superior, la versión 2 añadió services, volumes y networks, y la versión 3 la moldeó Docker Swarm, razón por la que claves como deploy siguen apareciendo en ficheros que nunca verán un swarm. La numeración terminó con la Compose Specification, que unió las ramas 2 y 3 y dejó obsoleto el campo version.
La reescritura de Python a Go en Compose V2 cambió también la forma de invocarlo: docker-compose con guion pasó a ser docker compose, un subcomando de la CLI de Docker. El antiguo binario independiente llegó al final de su vida útil en julio de 2023, así que si un tutorial todavía te dice que añadas version: '3.8' al principio del fichero, está escrito para una herramienta que Docker ya no distribuye.