Docker Compose est un programme Python simple qui facilite les déploiements de plusieurs conteneurs Docker sur un serveur.
Il utilise un simple fichier YAML pour la description du service.
Au lieu du long docker run . . .
lignes, vous pouvez simplement utiliser docker-compose up -d
pour déployer plusieurs services à la fois.
Dans ce tutoriel, je vais vous montrer comment installer Docker Compose sur le serveur CentOS. Je vais également vous montrer un exemple rapide d'utilisation de Docker Compose pour déployer un serveur NGINX avec une configuration spécifique.
Installation de docker-compose sur CentOS
Vous devez installer Docker au préalable. Assurez-vous d'installer Docker sur votre système CentOS avant d'installer Docker Compose.
docker-compose n'est fourni ni dans les référentiels officiels de CentOS ni dans le référentiel rpm de docker.
Il existe deux manières d'installer Docker Compose sous Linux :
- Téléchargez les fichiers d'installation de Docker Compose Linux et configurez-les manuellement
- Utilisez PIP pour installer Docker Compose facilement
Personnellement, je préfère utiliser PIP pour installer Docker Compose. Étant donné que Docker Compose est essentiellement une application Python, il est logique d'utiliser PIP pour l'installer.
Voyons comment faire.
Installer pip3
Installez pip3 à l'aide de la commande suivante :
sudo dnf install python3-pip
Installer docker-compose en utilisant pip3
Utilisez pip pour installer docker-compose
pip3 install --user docker-compose
Mettre à jour le CHEMIN
pip installe docker-compose dans ~/.local/bin
annuaire. Vous devrez l'ajouter à la variable d'environnement PATH afin de pouvoir l'exécuter de n'importe où :
echo 'PATH="$PATH:$HOME/.local/bin"' >> ~/.bashrc
Si vous utilisez zsh
, modifiez .bashrc
vers .zshrc
.
Une fois que vous avez terminé, utilisez la commande source source ~/.bashrc
ou rouvrez le terminal (déconnectez-vous et reconnectez-vous s'il s'agit d'un serveur).
Confirmez que docker-compose est installé à l'aide de la commande suivante :
[email protected]:~$ docker-compose --version
docker-compose version 1.26.2, build unknown
Toutes nos félicitations! Vous avez maintenant docker-compose installé sur votre serveur CentOS 8.
Vous voulez le tester ? Suivez ce didacticiel simple et apprenez à utiliser Docker Compose.
Déployer un exemple de serveur nginx à l'aide de docker-compose
Nginx est l'un des serveurs Web les plus populaires, il est facilement déployable via Docker.
Comparons la manière de composer et la manière de ne pas composer
Déployer Nginx sans Docker Compose
Vous pouvez utiliser run
commande pour déployer facilement un serveur nginx comme ceci :
docker run --name server --network net -v html:/usr/share/nginx/html -v $PWD/custom-config.conf:/etc/nginx/nginx.conf -p 80:80 --restart on-failure -d nginx:latest
Ici, vous avez déployé un serveur nginx, avec un nom de conteneur "server", en utilisant un réseau externe "net", monté un volume nommé "html", en utilisant un fichier de configuration personnalisé et en écoutant sur le port 80 sur l'hôte, qui redémarre automatiquement en cas d'échec.
Passons en revue les problèmes ici :
Vous devrez créer les réseaux et les volumes au préalable
Docker ne créera pas automatiquement le réseau et le volume. Vous devrez les créer au préalable.
Trop d'options à écrire à chaque fois
Il y a trop d'options à écrire. S'il s'agit d'un conteneur plus compliqué comme un conteneur de base de données ou un conteneur de proxy inverse ou un conteneur nextcloud, ces options ne feront que croître.
Environnement de développement
Que se passe-t-il si vous testez votre build et que vous ne souhaitez pas conserver le volume après l'arrêt du conteneur ? Vous devrez ensuite supprimer manuellement le volume et le réseau.
Déployer Nginx avec Docker Compose
Tout d'abord, vous devrez créer un fichier de composition.
Créez un répertoire nommé "nginx-compose" et cd dedans :
mkdir nginx-compose && cd nginx-compose
Créez un fichier nommé "docker-compose.yml" et ajoutez les lignes suivantes
version: "3.3"
services:
server:
image : "nginx:latest"
container_name: "server"
volumes:
- "html:/usr/share/nginx/html"
- "./custom-config.conf:/etc/nginx/nginx.conf"
networks:
- "net"
ports:
- "80:80"
restart: "on-failure"
volumes:
html:
networks:
net:
Ce fichier de composition décrit un service nommé server
, cela déploiera un serveur nginx avec exactement les mêmes configurations que nous l'avons fait de manière non composée. Déployez-le en utilisant :
docker-compose up -d
docker-compose recherchera dans le répertoire courant un fichier nommé "docker-compose.yml", l'analysera et déploiera les services qui y sont définis.
Passons maintenant en revue les problèmes de la méthode non composée avec la méthode de composition :
- Pas besoin de créer les réseaux et les volumes au préalable, docker-compose le fait pour vous. Vous pouvez ajouter des volumes externes en définissant external sur true dans chaque volume/réseau.
- Une fois que vous avez écrit le fichier .yaml, plus besoin d'écrire des commandes massives. Vous pouvez copier ce fichier sur n'importe quel autre serveur sur lequel une version récente de docker-compose est installée et il fonctionnera comme prévu avec facilité.
- Vous pouvez utiliser
docker-compose down -v
commande pour arrêter et supprimer non seulement les conteneurs, mais également tous les réseaux et volumes créés par docker-compose. Cela aide à nettoyer dans un environnement de développement/test.
Il existe de nombreux autres avantages à utiliser docker-compose plutôt que docker run
, en particulier dans la production, qui est hors de la portée de l'article d'aujourd'hui.
Si vous voulez voir quelque chose comme ça, faites-le moi savoir dans la section des commentaires ci-dessous. Gardez un œil sur notre série Docker pour plus de guides comme ceux-ci.