Déployez vos applications grâce à Docker
10 mai 2019IV. Docker-compose
1) Présentation
Docker-compose est un outil pour définir et lancer des applications multi-conteneurs. Grâce à un fichier YAML, vous pouvez configurer les différents services de votre application. Par exemple, pour faire tourner votre site web développé en PHP vous avez généralement besoin d’un serveur Apache, de PHP et d’une base de données MYSQL. Grâce à Docker-compose, vous pourrez définir les 3 images qui vous intéressent et les paramétrer pour lancer automatiquement un ensemble de conteneurs reliés entre eux.
Voici un exemple de fichier docker-compose :
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
Pour plus d’informations, vous pouvez consulter la documentation officielle.
2) Installation
- Lancez cette commande pour télécharger la dernière version stable de Docker Compose :
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- Autorisez l’exécution du fichier binaire :
sudo chmod +x /usr/local/bin/docker-compose
- Testez l’installation :
docker-compose --version
- Si la commande docker-compose ne fonctionne pas, vérifiez votre PATH. Vous pouvez aussi créer un lien symbolique vers /usr/bin ou n’importe quel autre répertoire qui se trouve dans votre PATH :
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
- Pour afficher une liste des commandes disponibles :
docker-compose --help
3) Utilisation
Rendez-vous dans le répertoire où se trouve votre fichier docker-compose.yml pour votre application puis lancer vos conteneurs grâce à cette commande :
docker-compose up # Avec la console attachée
docker-compose up -d # Avec la console détachée
Si vous vous trouvez dans un autre répertoire :
docker-compose -f /dossier/sous-dossier/docker-compose.yml up
Pour exécuter une commande dans un des conteneurs :
docker-compose exec mon_conteneur ma_commande
Exemple :
docker-compose exec rails bin/rails db:migrate
C’est l’équivalent de la commande docker exec
.
Afficher les logs depuis le dernier démarrage :
docker-compose logs
docker-compose logs -f # affiche les logs des services et continue à les « écouter » sans rendre la main
docker-compose logs -f mon_conteneur # Pour un seul conteneur
Pour stopper vos conteneurs :
docker-compose stop
Pour stopper ET supprimer vos conteneurs :
docker-compose down
Pour redémarrer les services :
docker-compose start # Après un stop
docker-compose restart
docker-compose restart mon_conteneur
4) Utilisation des variables d’environnement
Pour rendre votre docker-compose dynamique (mot de passe de bases de données, nom d’un serveur par ex), il est possible de passer des variables d’environnement à votre fichier docker-compose grâce à un fichier .env
situé au même niveau que votre fichier docker-compose.yml
.
Par exemple :
$ cat .env
TAG=v1.5
$ cat docker-compose.yml
version: '3'
services:
web:
image: "webapp:${TAG}"
$ docker-compose config
// Output :
version: '3'
services:
web:
image: 'webapp:v1.5'
Ce tutoriel est terminé et pourra évoluer dans le temps. Si vous remarquez des erreurs ou si vous avez des idées pour l’améliorer, n’hésitez pas à nous contacter.
Sommaire :
Les commentaires sont fermés.