Passer d’un essai en terminal à une configuration suivie
Le problème des longues commandes n’est pas seulement leur longueur : il faut retrouver les bons paramètres au prochain déploiement. Un fichier compose.yaml rassemble ces choix dans des champs explicites, ce qui facilite la relecture et le suivi des modifications dans Git.
Le convertisseur produit un service à partir d’une commande. Il ne récupère pas la configuration d’un conteneur en cours d’exécution et ne devine pas les liens entre plusieurs applications. Le résultat constitue une base à vérifier dans votre environnement.
Enregistrer le YAML puis vérifier sa configuration
Collez une commande docker run ou docker container run, en conservant les guillemets et les barres obliques inverses de continuation. Le nom de service facultatif modifie la clé sous services ; le nom donné avec --name reste dans container_name.
Lisez les notes, placez les fichiers référencés au bon endroit et lancez docker compose config. Un service permanent peut ensuite démarrer avec docker compose up -d. Une tâche ponctuelle comportant --rm nécessite un lancement adapté, détaillé plus bas.
Exemple : publier Nginx sur le port 8080
Le port 8080 de l’hôte est associé au port 80 du conteneur. La politique unless-stopped reste dans le YAML. L’option -d, elle, se choisit au démarrage de Compose : elle ne décrit pas le service.
docker run -d --name web -p 8080:80 \
--restart unless-stopped nginx:alpineservices:
web:
image: "nginx:alpine"
container_name: "web"
ports:
- "8080:80"
restart: "unless-stopped"
network_mode: "bridge"
Ne pas repartir sur un volume vide par erreur
Un volume nommé est déclaré avec son nom exact et external: true. Compose réutilise ainsi le volume existant au lieu d’en créer un autre préfixé par le projet. Pour une installation neuve, créez le volume au préalable ou retirez cette déclaration externe. Aucune donnée n’est copiée par l’outil.
Les chemins relatifs sont résolus depuis le dossier du fichier Compose. Les réseaux personnalisés sont également référencés comme externes. Sans option réseau, network_mode: bridge conserve le comportement par défaut de Docker run. Retirez-le pour utiliser volontairement le réseau de projet Compose et la résolution des noms de services.
Une conversion de syntaxe, sans exécution du shell
La saisie suit les règles POSIX : guillemets, échappements et continuations de ligne. PowerShell, CMD, les pipelines, plusieurs commandes et les options globales Docker ne sont pas pris en charge. Remplacez les variables et $(pwd) par leurs valeurs réelles. Un dollar littéral doit être protégé ; il devient $$ dans le YAML.
--env-file utilise format: raw, disponible à partir de Docker Compose 2.30.0. Le navigateur ne lit pas ce fichier, ne vérifie pas les images et ne teste pas les ports libres. La validation du fichier ne suffit donc pas à garantir le démarrage de l’application.
Correspondance des options Docker avec Compose
| Option Docker | Champ Compose | Traitement |
|---|---|---|
IMAGE | image | Image et étiquette conservées |
--name | container_name | Nom explicite du conteneur |
-p, --publish | ports | Association des ports hôte et conteneur |
-e, --env | environment | Valeurs omises résolues dans l’environnement d’exécution |
-v, --volume / --mount | volumes | Montages de dossiers, volumes nommés ou anonymes |
--network | networks / network_mode | Nom du réseau ou mode réseau |
--restart | restart | Politique de redémarrage |
IMAGE [COMMAND] [ARG…] | command | Arguments conservés sous forme de liste |
Questions sur la conversion
Pourquoi ne pas ajouter version ?
Le fichier suit la Compose Specification et commence par services. L’ancien champ version n’est pas ajouté. Utilisez la commande moderne docker compose pour la vérification.
Comment conserver le comportement de --rm ?
Pour une tâche ponctuelle, utilisez docker compose run --rm --service-ports SERVICE, en remplaçant SERVICE par son nom. --service-ports applique les associations de ports définies dans le fichier.
Une option non reconnue est-elle supprimée ?
Non. Les options telles que --gpus, --link et certains montages avancés interrompent la conversion. Il faut les configurer manuellement plutôt que risquer une omission.
Puis-je convertir toute une pile de conteneurs ?
Convertissez chaque commande séparément, puis rassemblez les services. Les volumes partagés, les réseaux et les dépendances doivent être réconciliés manuellement.
La commande est-elle envoyée à un serveur ?
Non, la conversion se fait dans le navigateur. Les valeurs saisies, y compris les mots de passe éventuels, restent toutefois présentes dans le fichier généré : relisez-le avant de le publier dans un dépôt.
Que faire si le conteneur existe déjà ?
La génération ne modifie pas les conteneurs. Au moment du lancement avec Compose, résolvez les conflits de noms ou de ports avec les instances existantes.
Documentation officielle Docker: docker run · Compose · $$
