Inicio › Herramientas para desarrolladores › Convertidor de docker run a Compose

Convertidor de docker run a Compose

Pega uno o más comandos docker run y obtén un docker-compose.yml limpio con puertos, volúmenes, variables de entorno, políticas de reinicio, redes, health checks y límites de recursos. Cambia la dirección para convertir un archivo compose de nuevo en comandos docker run.

Última actualización:

    Publicidad
    Publicidad

    Cómo usar Convertidor de docker run a Compose

    1. Pega tus comandos docker run en el cuadro de la izquierda, uno o varios. Los comandos de varias líneas con barras invertidas también sirven.
    2. Lee el archivo compose a la derecha. Se actualiza mientras escribes, con cada contenedor como un servicio.
    3. Revisa las notas debajo del resultado para ver los flags que se ignoraron o que requieren atención.
    4. Copia o descarga docker-compose.yml e inicia todo con docker compose up -d.
    5. ¿Quieres hacerlo al revés? Cambia a Compose → docker run, pega un archivo compose y obtén los comandos de shell equivalentes.

    Flags de docker run y sus claves en compose

    docker rundocker-compose.ymlEjemplo
    --name webcontainer_name (y el nombre del servicio)container_name: web
    -p 8080:80ports- "8080:80"
    -v data:/var/lib/xvolumes + volumes de nivel superior- data:/var/lib/x
    -v ./src:/app:rovolumes (bind mount)- ./src:/app:ro
    --mount type=bind,…volumes con sintaxis largatype: bind, source, target
    -e KEY=valueenvironmentKEY: value
    --env-file .envenv_file- .env
    --restart unless-stoppedrestartrestart: unless-stopped
    --network mynetnetworks + networks de nivel superior- mynet
    --network hostnetwork_modenetwork_mode: host
    -w /app, -u 1000working_dir, useruser: "1000"
    --memory 512m --cpus 1.5mem_limit, cpusmem_limit: 512m
    --health-cmd "…"healthcheck.test["CMD-SHELL", "…"]
    --gpus alldeploy.resources.reservations.devicescapabilities: ["gpu"]
    -itstdin_open + ttytty: true
    imagen y argumentos finalesimage, commandcommand: ["npm", "start"]

    Comandos de docker compose de uso diario

    ComandoQué hace
    docker compose up -dCrea e inicia todos los servicios en segundo plano
    docker compose psLista los contenedores del proyecto y su estado de salud
    docker compose logs -f apiSigue los logs de un servicio
    docker compose pull && docker compose up -dActualiza las imágenes y recrea los contenedores que cambiaron
    docker compose exec db psql -U appEjecuta un comando dentro de un servicio en ejecución
    docker compose configValida el archivo y lo muestra con las variables resueltas
    docker compose downDetiene y elimina contenedores y redes (añade -v para borrar también los volúmenes con nombre)

    Cosas que no se traducen una a una

    • Los nombres llevan el prefijo del proyecto. Compose nombra las redes y los volúmenes <project>_<name>. Para conectarte a datos o redes que creaste con docker run, decláralos con external: true.
    • Rutas relativas. En compose, ./data es relativa al archivo compose. Con docker run, usa una ruta absoluta o $(pwd)/data.
    • Descubrimiento de servicios. Los servicios de compose se resuelven entre sí por nombre de servicio automáticamente. Con docker run necesitas una red definida por el usuario (el bridge predeterminado no tiene DNS).
    • Orden de inicio. depends_on (opcionalmente con condition: service_healthy) solo existe en compose. Si los ejecutas a mano, inicia primero las bases de datos.
    • Variables. Compose sustituye ${VAR} y ${VAR:-default} a partir del shell y del archivo .env situado junto al archivo compose. Un $ literal debe escribirse como $$.

    Preguntas frecuentes

    ¿Cómo convierto un comando docker run a docker compose?

    Cada docker run se convierte en un servicio. La imagen va a image, --name a container_name, -p a ports, -v a volumes, -e a environment, --restart a restart y --network a networks. Pega el comando en esta herramienta para obtener el YAML automáticamente y luego ejecuta docker compose up -d en la carpeta donde está el archivo.

    ¿Sigue siendo necesaria la línea version en docker-compose.yml?

    No. La Compose Specification que usa Docker Compose v2 ignora la clave version de nivel superior y las versiones más nuevas avisan de que está obsoleta, así que esta herramienta la omite. El archivo puede llamarse compose.yaml o docker-compose.yml.

    ¿Qué pasa con --rm y -d?

    Compose no tiene equivalente de --rm para servicios de larga duración, así que se descarta con una nota; usa docker compose down para eliminar los contenedores. -d tampoco forma parte del archivo: se pasa al iniciar, como en docker compose up -d.

    ¿Por qué los volúmenes con nombre aparecen al final del archivo?

    Compose exige que cada volumen con nombre usado por un servicio se declare bajo la clave volumes de nivel superior. Los bind mounts que empiezan por /, ./ o ~ son rutas del host y no necesitan declaración.

    ¿Mis contenedores mantendrán los mismos nombres de red y de volumen?

    Compose añade a las redes y volúmenes que crea el nombre del proyecto como prefijo (normalmente el nombre de la carpeta), por ejemplo myapp_data. Para reutilizar los que creaste con docker run, márcalos con external: true o define un name explícito.

    ¿Los servicios pueden comunicarse entre sí por nombre?

    Sí. Compose pone todos los servicios en una red predeterminada donde cada nombre de servicio es un nombre de host DNS, así que la app puede conectarse a db:5432. Con docker run a secas necesitas una red definida por el usuario para eso, y por eso la conversión inversa crea una.

    ¿Se envía mi comando a algún sitio?

    No. El análisis y la conversión se ejecutan por completo en tu navegador. Las variables de entorno y los secretos de tus comandos nunca salen de tu computadora.

    ¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

    Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

    Herramientas relacionadas

    Ver todas las de Generadores de código →