Saltar al contenido

docker run a Compose

docker run to Compose

Convierte una línea de comandos docker run en una definición de servicio de Compose, y también en sentido contrario.

Convierte una línea de comandos `docker run` en el servicio de `compose.yaml` al que corresponde. El comando se divide con las reglas reales de entrecomillado de la shell, así que un entrypoint escrito como `sh -c "…"` sobrevive con sus espacios y comillas intactos.

🔒 Se ejecuta por completo en tu navegadordockercomposeconvertdevops

Comando docker run

compose.yaml

Notas

  • -d solo afecta a la propia invocación de docker run; Compose no tiene equivalente, así que se descartó.
El comando se parte con las reglas de comillas de un shell de verdad, así que un entrypoint como sh -c "…" sobrevive con sus espacios. Las banderas sin equivalente en Compose (--rm, -d) se descartan con una nota — el ciclo de vida lo decide Compose — y las banderas desconocidas se nombran, nunca se tragan en silencio. Los puertos van entre comillas en la salida porque si no YAML 1.1 leería 8080:80 como un número en base 60.

Cómo se usa

  1. Pega el comando

    Las continuaciones de línea, los valores entre comillas y un comando final después de la imagen se manejan todos. Nada se ejecuta: esto es texto que entra, texto que sale.

  2. Lee las notas bajo la salida

    Los flags sin equivalente en Compose se listan en lugar de eliminarse en silencio, y un flag desconocido se nombra. Esa lista es la parte que merece revisarse antes de confirmar el archivo.

  3. Cópialo en tu archivo compose

    La salida es un servicio. Ponlo bajo `services:` junto a lo que ya tengas, y dale el nombre que quieras si el comando no tenía `--name`.

Preguntas frecuentes

¿Por qué los puertos van entre comillas?

Porque YAML 1.1 lee `8080:80` como un número en base 60: la sintaxis sexagesimal que nadie quería y que todo parser de YAML heredó. Las comillas son lo que lo mantiene como una asignación de puertos. Es la trampa clásica de Compose.

¿Qué pasó con `--rm` y `-d`?

Se eliminaron con una nota, porque Compose es dueño del ciclo de vida. `docker compose up` es la decisión de adjunto o desacoplado y `docker compose down` elimina los contenedores, así que esos flags no tienen equivalente a nivel de servicio al que traducirse.

¿Escribe un archivo compose entero?

Escribe el servicio. Las redes, los volúmenes de nivel superior y una clave `version:` (que el Compose moderno ya no quiere) te toca añadirlos a ti, y en la mayoría de los casos no deberías necesitarlos.

Puede recibir de

Después

Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.