LANTORIANDocker, pas à pas

Chapitre 115 min

Aide-mémoire

Garde cette page ouverte les premiers jours. Tout le reste du guide y est résumé.

docker

docker run -d --name web -p 8080:80 image:tagLancer un conteneur en arrière-plan
docker run --rm -it image shConteneur jetable avec un shell
docker ps / docker ps -aConteneurs en cours / tous
docker logs -f webSuivre les logs
docker exec -it web shEntrer dans un conteneur
docker stop web / docker rm -f webArrêter / supprimer
docker build -t nom:tag .Construire une image
docker images / docker rmi nom:tagLister / supprimer des images
docker volume ls / docker volume rm nomLister / supprimer des volumes
docker system dfEspace disque utilisé

docker compose

docker compose up -dDémarrer le projet
docker compose up -d --buildDémarrer en reconstruisant les images
docker compose psÉtat des services
docker compose logs -f serviceLogs d'un service
docker compose exec service shShell dans un service
docker compose run --rm service commandeCommande dans un conteneur jetable
docker compose restart serviceRedémarrer un service
docker compose downArrêter (les données restent)
docker compose down -vArrêter et effacer les volumes

Laravel

docker compose exec php composer installInstaller les dépendances PHP
docker compose exec php php artisan key:generateGénérer APP_KEY
docker compose exec php php artisan migrate --seedMigrer et remplir la base
docker compose exec php php artisan tinkerConsole interactive
docker compose exec php php artisan testLancer les tests
docker compose exec php php artisan optimize:clearVider tous les caches
docker compose exec db psql -U laravelConsole PostgreSQL

Next.js

docker compose exec front npm install paquetAjouter une dépendance
docker compose restart frontRelancer après un changement de package.json
docker compose logs -f frontErreurs de compilation
docker build -t front:prod --build-arg NEXT_PUBLIC_API_URL=... .Image de production

Les bonnes habitudes

  • Toujours une version précise : postgres:18, jamais postgres ni latest.
  • Les commandes PHP et npm se lancent dans le conteneur, pas sur ta machine.
  • Entre conteneurs, on s'adresse par le nom du service. localhost désigne le conteneur lui-même.
  • Les .env ne se commitent pas. Les .env.example, si.
  • Une base de données a toujours un volume, monté au bon chemin.
  • Ce qui change rarement en haut du Dockerfile, ce qui change souvent en bas.
  • Pas de secret dans une variable NEXT_PUBLIC_.
  • Avant de demander de l'aide : ps, logs, exec.
Échap