Conserver une configuration réutilisable

Convertir docker run en Compose

Une commande testée dans le terminal mérite une configuration facile à relire. Retrouvez ses ports, variables et volumes dans un fichier Compose, avec les points à vérifier avant le premier démarrage.

docker runcompose.yaml
Conversion dans le navigateur
01

Collez une seule commande. Les guillemets et les continuations de ligne avec une barre oblique inverse sont pris en charge. Conversion à la saisie.

02

compose.yaml

services:
  web:
    image: "nginx:alpine"
    container_name: "web"
    ports:
      - "8080:80"
    volumes:
      - "./html:/usr/share/nginx/html:ro"
    restart: "unless-stopped"
    network_mode: "bridge"

5 options · 1 serviceYAML

Avant de démarrer

  • Le mode arrière-plan se choisit au lancement avec docker compose up -d.
  • Les chemins relatifs dépendent de l’emplacement de compose.yaml. Vérifiez le dossier ou utilisez des chemins absolus.
  • network_mode: bridge conserve le réseau par défaut de docker run. Retirez ce champ pour laisser Compose créer son réseau de projet.
Vérifier en localdocker compose config

Sans inscription ni exécution de commande. La saisie est traitée dans votre navigateur.

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:alpine
services:
  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 DockerChamp ComposeTraitement
IMAGEimageImage et étiquette conservées
--namecontainer_nameNom explicite du conteneur
-p, --publishportsAssociation des ports hôte et conteneur
-e, --envenvironmentValeurs omises résolues dans l’environnement d’exécution
-v, --volume / --mountvolumesMontages de dossiers, volumes nommés ou anonymes
--networknetworks / network_modeNom du réseau ou mode réseau
--restartrestartPolitique de redémarrage
IMAGE [COMMAND] [ARG…]commandArguments 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 · $$