Herramientas de desarrollo · Convertidor de ejecución de Docker a Docker Compose
Cómo se asignan los indicadores de ejecución de Docker a las claves de Compose: -p, -v, -e, --name y más
· Cómo funciona
docker componer flujo de trabajo del desarrollador
La mayoría de los indicadores de ejecución de Docker tienen un equivalente de Compose uno a uno, y algunos no tienen ninguno. Esta publicación recorre el mapeo para que una definición de servicio convertida se lea como se esperaba.
Una ejecución de Docker que incluye tres líneas en el README: funciona, nadie puede revisarlo y el equipo quiere un compose.yaml
Una ejecución de Docker de varias líneas puede iniciar un servicio hoy mientras oculta su contrato operativo en un alias de shell o README. Un archivo de redacción traslada las mismas opciones a una definición de servicio revisable, pero la conversión debe tener en cuenta cada indicador en lugar de eliminar silenciosamente la configuración de seguridad. ToolAcre analiza el comando como texto: nunca ejecuta la imagen, abre un socket Docker ni implementa un contenedor. Trate el resultado como un borrador de configuración que aún necesita un operador para verificar las rutas de host, las credenciales y los supuestos de red.
La forma de un servicio: imagen, luego un conjunto de claves que reflejan las banderas, en servicios: y un nombre de servicio.
Compose YAML comienza en servicios:, seguido del nombre del servicio y una imagen:. A diferencia de una línea de comando, sus claves agrupan valores repetidos, como puertos y entradas de entorno, en secuencias. ToolAcre deriva un nombre de servicio de --name o la imagen y construye un modelo antes de serializar YAML. Los archivos de Compose actuales no necesitan una versión de nivel superior: clave; agregar uno porque una publicación de blog anterior mostraba que crearía una advertencia obsoleta en lugar de mejorar la compatibilidad.
Los indicadores comunes: -p a puertos, -v a volúmenes, -e a entorno, --name a nombre_contenedor, --restart a reiniciar, --network a redes
Las asignaciones comunes hacen que el archivo sea reconocible: -p 8080:80 se convierte en puertos: con una asignación entre comillas, -v host:contenedor se convierte en una entrada de volúmenes, -e KEY=valor entra en el entorno, --name se convierte en nombre_contenedor, --restart se convierte en reinicio y --network necesita contexto de red. Citar la asignación de puertos es importante porque YAML debería tratarla como una cadena, no interpretar la puntuación como otro tipo. Un volumen con nombre puede requerir su propia declaración de volúmenes de nivel superior; Se debe comparar un montaje de enlace de host con la máquina donde se ejecutará Compose.
Los indicadores menos comunes: --hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label, --add-host y sus claves.
Banderas como --hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label y --add-host tienen conceptos de servicio correspondientes, pero su semántica puede depender del tiempo de ejecución y del host. Una --security-opt no admitida no debe inventarse como una clave de apariencia plausible ni descartarse de manera invisible. ToolAcre enumera advertencias que nombran opciones no compatibles para que un revisor pueda finalizar el mapeo manualmente o decidir que Compose no es el reemplazo adecuado. La presencia de una clave YAML no prueba que el servicio comience con los mismos privilegios.
Argumentos posicionales: la imagen se convierte en imagen: y todo lo que sigue se convierte en comando:
El nombre de la imagen es un argumento posicional después de ejecutar y sus opciones. Los argumentos después de la imagen se convierten en el comando de servicio, no en más indicadores de ejecución de Docker; mover un token a través de ese límite cambia el programa que lo recibe. Las comillas y barras invertidas del Shell también son importantes al dividir un ejemplo README en tokens. El analizador de ToolAcre no es un intérprete de shell, por lo que una variable como $HOME debe revisarse en contexto en lugar de asumir que se expande como lo haría en el shell interactivo original.
Ejemplo resuelto: convertir una ejecución de la ventana acoplable de Postgres: el comando completo, la definición del servicio resultante y una comparación línea por línea
Considere el comando ilustrativo docker run -d --name demo-db -p 5432:5432 -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=demo-only --restart unless-stopped postgres:16. ToolAcre emite services.demo-db con la imagen postgres:16, container_name demo-db, un puerto 5432:5432 citado, un volumen de pgdata, una entrada de lista de entorno, reinicio: unless-stopped y una declaración de volumen de pgdata top-level. Advierte que -d es una opción command-line; La ventana acoplable compone -d lo maneja. “demo-only” es un marcador de posición de enseñanza deliberadamente inseguro; nunca introduzca una contraseña de base de datos real en este YAML generado.
Lo que esto no cubre: indicadores sin equivalente de servicio (-d, --rm) y cosas que no están en el comando en absoluto, como contextos de compilación.
No todos los indicadores de ejecución tienen una contraparte de propiedad de servicio duradera. -d es manejado por el comando de redacción que invocas; --rm pertenece a una ejecución de redacción única en lugar de a un servicio de larga duración. No se puede inferir un contexto de compilación, un almacén secreto, una estrategia de salud o una dependencia multiservicio ausente del comando original. La herramienta informa indicadores no compatibles en lugar de pretender que su resultado es un plan de implementación completo. Lea la referencia del servicio Docker Compose antes de implementar un contenedor privilegiado o sensible a la red.
Conclusión: Compose es la misma configuración, estructurada, y el convertidor produce la definición del servicio a partir del comando que usted pega.
Compose es la misma configuración, estructurada para facilitar la revisión y la repetición. El convertidor de Docker run a Docker Compose proporciona en el navegador una definición candidata del servicio y mantiene local el comando pegado; no ejecuta Docker. Compare cada indicador de origen con su clave YAML, atienda las advertencias y elimine los secretos de los bloques de entorno sin cifrar antes de aplicar el resultado a un host real.