Outils de développement · Convertisseur Docker exécuté vers Docker Compose
Comment Docker exécute les indicateurs mappés aux clés de composition : -p, -v, -e, --name et plus
· Comment ça marche
menu fixe composer workflow de développeur
La plupart des indicateurs d'exécution de Docker ont un équivalent Compose un à un, et quelques-uns n'en ont pas. Cet article parcourt le mappage afin qu'une définition de service convertie se lise comme prévu.
Une exécution Docker qui enveloppe trois lignes dans le README – ça fonctionne, personne ne peut l'examiner et l'équipe veut un compose.yaml
Une exécution de Docker multiligne peut démarrer un service aujourd'hui tout en cachant son contrat opérationnel dans un alias shell ou README. Un fichier Compose déplace les mêmes choix dans une définition de service révisable, mais la conversion doit tenir compte de chaque indicateur plutôt que de supprimer silencieusement les paramètres de sécurité. ToolAcre analyse la commande sous forme de texte : il n'exécute jamais l'image, n'ouvre jamais de socket Docker et ne déploie jamais de conteneur. Traitez le résultat comme un projet de configuration qui nécessite toujours qu'un opérateur vérifie les chemins d'accès des hôtes, les informations d'identification et les hypothèses réseau.
La forme d'un service - image, puis un ensemble de clés qui reflètent les drapeaux, sous services : et un nom de service
Compose YAML commence sous services :, suivi d'un nom de service et d'une image :. Contrairement à une ligne de commande, ses clés regroupent les valeurs répétées telles que les ports et les entrées d'environnement dans des séquences. ToolAcre dérive un nom de service à partir de --name ou de l'image et crée un modèle avant de sérialiser YAML. Les fichiers Compose actuels n'ont pas besoin d'une version de niveau supérieur : key; en ajouter un car un article de blog plus ancien montrait que cela créerait un avertissement obsolète plutôt que d'améliorer la compatibilité.
Les indicateurs communs : -p aux ports, -v aux volumes, -e à l'environnement, --name au nom_du_conteneur, --restart pour redémarrer, --network aux réseaux
Les mappages courants rendent le fichier reconnaissable : -p 8080:80 devient des ports : avec un mappage entre guillemets, -v host:container devient une entrée de volumes, -e KEY=value va dans l'environnement, --name devient nom_conteneur, --restart devient redémarrage et --network a besoin d'un contexte réseau. Citer le mappage de port est important car YAML doit le traiter comme une chaîne et non interpréter la ponctuation comme un autre type. Un volume nommé peut nécessiter sa propre déclaration de volumes de niveau supérieur ; un montage de liaison hôte doit être vérifié par rapport à la machine sur laquelle Compose sera exécuté.
Les indicateurs les moins courants — --hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label, --add-host et leurs clés
Les indicateurs tels que --hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label et --add-host ont des concepts de service correspondants, mais leur sémantique peut dépendre du moteur d'exécution et de l'hôte. Un --security-opt non pris en charge ne doit pas être inventé comme une clé d'apparence plausible ou jeté de manière invisible. ToolAcre répertorie les avertissements nommant les options non prises en charge afin qu'un réviseur puisse terminer le mappage manuellement ou décider que Compose n'est pas le bon remplacement. La présence d'une clé YAML ne prouve pas que le service démarre avec les mêmes privilèges.
Arguments de position — l'image devient image :, et tout ce qui suit devient commande :
Le nom de l'image est un argument de position après l'exécution et ses options. Les arguments après l'image deviennent la commande de service, et non plus les indicateurs d'exécution de Docker ; déplacer un jeton à travers cette limite change le programme qui le reçoit. Les guillemets et les barres obliques inverses du shell sont également importants lors de la division d'un exemple README en jetons. L'analyseur de ToolAcre n'est pas un interpréteur de shell, donc une variable telle que $HOME doit être examinée dans son contexte plutôt que de supposer qu'elle se développe comme elle le ferait dans le shell interactif d'origine.
Exemple concret : conversion d'une exécution de Docker Postgres – la commande complète, la définition de service résultante et une comparaison ligne par ligne
Considérez la commande illustrative docker run -d --name demo-db -p 5432:5432 -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=demo-only --restart à moins que postgres arrêté:16. ToolAcre émet services.demo-db avec l'image postgres:16, containers_name demo-db, un port 5432:5432 cité, un volume pgdata, une entrée de liste d'environnement, redémarrage : sauf arrêt et une déclaration de volume pgdata de niveau supérieur. Il avertit que -d est un choix en ligne de commande ; docker compose up -d le gère. « démo uniquement » est un espace réservé d'enseignement délibérément non sécurisé : ne confiez jamais un véritable mot de passe de base de données dans ce YAML généré.
Ce que cela ne couvre pas : les indicateurs sans équivalent de service (-d, --rm) et les éléments qui ne figurent pas du tout dans la commande, tels que les contextes de construction.
Tous les indicateurs d'exécution n'ont pas une contrepartie durable en matière de propriété de service. -d est géré par la commande compose que vous invoquez ; --rm appartient à une exécution de composition unique plutôt qu'à un service de longue durée. Un contexte de construction, un magasin secret, une stratégie de santé ou une dépendance multiservice absents de la commande d'origine ne peuvent pas être déduits. L'outil signale les indicateurs non pris en charge au lieu de prétendre que son résultat est un plan de déploiement complet. Lisez la référence du service Docker Compose avant de déployer un conteneur privilégié ou sensible au réseau.
À retenir : Compose est la même configuration, structurée - et le convertisseur produit la définition du service à partir de la commande que vous collez
Compose est la même configuration, structurée pour la révision et la répétabilité. Le convertisseur Docker run to Docker compose vous donne une définition de service candidat dans votre navigateur et conserve la commande collée locale ; il n'exécute pas Docker. Comparez chaque indicateur source avec sa clé YAML, corrigez les avertissements et supprimez les secrets des blocs d'environnement simples avant d'appliquer le résultat à un hôte réel.