Docker Compose est un outil en ligne de commande permettant de définir et de gérer des conteneurs Docker multi-conteneurs comme s'il s'agissait d'un service unique. Compose est écrit en python et peut être installé avec la commande Python pip. Avec compose, nous pouvons exécuter plusieurs conteneurs Docker avec une seule commande. Il vous permet de créer un conteneur en tant que service, idéal pour votre environnement de développement, de test et de préproduction.
Dans ce tutoriel, je vais vous guider étape par étape pour utiliser docker-compose. Nous allons déployer 'Wordpress ' avec Nginx, MySQL et PHP-FPM. Chaque service a son propre conteneur et nous utiliserons des images du registre Docker Hub. Je vais vous montrer comment créer des conteneurs à partir d'images docker et gérer tous les conteneurs avec docker-compose.
Prérequis
- Ubuntu 16.04
- Privilèges racine
Étape 1 - Installer Docker
Nous allons repartir de zéro, en installant docker et docker compose manuellement avec la commande apt.
Avant de commencer, mettez à jour le référentiel Ubuntu et installez les dernières mises à jour :
sudo apt-get update
sudo apt-get upgrade
Par défaut, docker est disponible dans le référentiel Ubuntu, nous pouvons donc continuer à l'installer immédiatement :
sudo apt-get install -y docker.io
Une fois l'installation terminée, démarrez docker et ajoutez-le pour qu'il démarre automatiquement au démarrage :
systemctl start docker
systemctl enable docker
Testez maintenant votre installation de docker avec la commande ci-dessous :
docker lance hello-world
Vous verrez hello-world depuis docker.
Étape 2 - Installer Docker-Compose
Docker-compose est un script écrit en python, il est disponible dans le référentiel python PyPI et peut être installé avec python pip. Nous devons donc d'abord installer python et python pip sur notre système.
Installez python et python-pip :
sudo apt-get install -y python python-pip
Ensuite, installez docker-compose avec la commande pip :
pip install docker-compose
attendez que le processus d'installation se termine. Vérifiez ensuite l'installation avec la commande docker-compose :
docker-compose -v
Vous obtiendrez la version docker-compose.
Étape 3 - Configurer Wordpress
Maintenant, docker et docker-compose sont installés sur le système. Dans cette étape, nous vous montrerons comment créer et configurer l'environnement docker-compose pour notre projet WordPress.
Nous allons déployer l'application PHP 'Wordpress' avec Nginx comme serveur web, et MariaDB pour la base de données MySQL comme conteneurs docker gérés par docker-compose. Chaque application (Wordpress, Nginx et MySQL) s'exécutera dans son propre conteneur, vous pouvez voir la liste ci-dessous :
- Nginx :Nous utilisons l'image docker officielle, dernière version 'nginx:latest'.
- Wordpress :Wordpress fournit des images docker sur docker-hub, et nous utiliserons WordPress 4.7 avec PHP-FPM 7.0 dessus.
- MySQL :Nous utiliserons le conteneur officiel MariaDB, dernière version.
Nous avons donc besoin de 3 images Docker du registre Docker Hub.
Nous n'exécuterons pas docker en tant que root, nous utiliserons un utilisateur Linux normal. Créez donc simplement un nouvel utilisateur avec la commande ci-dessous (n'hésitez pas à utiliser un nom d'utilisateur différent ici, assurez-vous simplement que l'utilisateur n'existe pas encore. Si vous choisissez un nom différent, assurez-vous de le changer dans toutes les commandes qui suivent dans ce tutoriel):
useradd -m -s /bin/bash hakase
passwd hakase
Ajoutez maintenant l'utilisateur au 'docker ' afin que l'utilisateur puisse utiliser la commande docker et redémarrer le service docker :
usermod -a -G docker hakase
systemctl restart docker
Connectez-vous à l'utilisateur 'hakase' et créez un nouveau répertoire pour le projet WordPress :
su - hakase
mkdir -p wordpress-compose
cd wordpress-compose/
Ensuite, créez un nouveau fichier appelé 'docker-compose.yml ', et créez un nouveau répertoire pour le projet. Tapez simplement les commandes ci-dessous :
touchez docker-compose.yml
mkdir -p nginx/
mkdir -p db-data/
mkdir -p logs/nginx/
mkdir -p wordpress/Liste des fichiers et répertoires du projet :
- docker-compose.yml :Il s'agit du fichier de configuration docker-compose, vous devez le créer lors du démarrage d'un nouveau projet docker-compose.
- nginx/ :Ce répertoire est utilisé pour notre configuration nginx supplémentaire comme l'hôte virtuel, etc.
- db-data/ :le volume/répertoire des données mysql. Le sql des données '/var/lib/mysql' est monté dans le répertoire db-data.
- journaux/ :Répertoire pour le journal des applications, nginx, mariadb et php-fpm.
- wordpress/ : Tous les fichiers wordpress seront disponibles dans ce répertoire.
Dans le répertoire 'nginx', créez un nouveau fichier de configuration pour notre hébergeur virtuel wordpress.
Créez un nouveau fichier wordpress.conf :
vim nginx/wordpress.confCollez la configuration ci-dessous :
server {
listen 80 ;
nom_serveur wp-hakase.co ;
racine /var/www/html ;
index index.php ;
access_log /var/log/nginx/hakase-access.log ;
error_log /var/log/nginx/hakase-error.log ;
emplacement / {
try_files $uri $uri/ /index.php?$args ;
}
emplacement ~ \.php$ {
try_files $uri =404 ;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}Enregistrez le fichier et quittez vim.
Étape 4 - Configurer Docker-Compose
Dans cette étape, nous allons commencer à éditer le fichier docker-compose.yml. Lorsque vous souhaitez démarrer le projet docker-compose, assurez-vous de créer d'abord le fichier docker-compose.yml comme nous le faisons ci-dessous.
Modifiez docker-compose.yml avec vim :
vim docker-compose.ymlDéfinissez vos services, sur la première ligne nous définirons Nginx. Nous utilisons l'image docker officielle de Nginx, la dernière version, et configurons le mappage de port pour le port 80 sur le conteneur vers le port 80 sur l'hôte. Ensuite, configurez les volumes docker, le volume pour notre configuration d'hôte virtuel Nginx, le volume pour les fichiers journaux Nginx et le volume du répertoire racine Web '/var/www/html'. Le conteneur Nginx est lié au conteneur WordPress.
Collez la configuration ci-dessous :
nginx :
image :nginx:latest
ports :
- '80:80'
volumes :
- ./nginx :/etc/nginx/ conf.d
- ./logs/nginx :/var/log/nginx
- ./wordpress :/var/www/html
liens :
- wordpress
redémarrer :toujoursEnsuite, définissez le serveur MySQL. Nous utilisons l'image MariaDB, dernière version. Configurez le mappage de port pour le conteneur sur le port 3306 et configurez le mot de passe racine MySQL avec la variable d'environnement « MYSQL_ROOT_PASSWORD ». Enfin, configurez le volume du conteneur pour le répertoire de données MySQL.
Collez la configuration ci-dessous :
mysql :
image :mariadb
ports :
- '3306:3306'
volumes :
- ./db-data :/var/lib/ environnement mysql
:
- MYSQL_ROOT_PASSWORD=aqwe123
redémarrage :toujoursEnsuite, nous configurerons le service WordPress en utilisant l'image docker WordPress 4.7 avec PHP-FPM 7.0 installé. Configurez le port pour PHP-fpm sur le port 9000, activez le volume docker pour le répertoire Web '/var/www/html' dans le répertoire hôte 'wordpress', configurez la base de données en définissant la variable d'environnement WordPress et liez le service WordPress à mysql.
Collez la configuration ci-dessous :
wordpress :
image :wordpress:4.7.1-php7.0-fpm
ports :
- - '9000:9000'
volumes :
- . /wordpress :/var/www/html
environnement :
- WORDPRESS_DB_NAME=wpdb
- WORDPRESS_TABLE_PREFIX=wp_
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_PASSWORD=aqwe123
liens :
- mysql
redémarrage :toujoursAprès avoir ajouté les trois parties dans le fichier docker-compose.yml, enregistrez le fichier et quittez l'éditeur vim.
Notre configuration docker-compose est prête.
Étape 5 - Exécuter Docker-compose
Commencez à créer les nouveaux conteneurs avec docker compose. Accédez au répertoire wordpress-compose et démarrez les nouveaux conteneurs basés sur notre fichier de composition.
cd ~/wordpress-compose/
docker-compose up -dVous pouvez voir les résultats de la commande. Trois conteneurs ont été créés. Vérifions le statut du conteneur avec l'option ps :
docker-composer psCi-dessous le résultat :
Si vous souhaitez voir la sortie du journal du conteneur, vous pouvez utiliser les commandes ci-dessous :
journaux docker-compose nginx
journaux docker-compose mysql
journaux docker-compose wordpressJournaux de conteneur :
Remarque :
Si vous voyez dans le journal du conteneur WordPress une erreur de connexion MySQL refusée, ignorez-la.Étape 6 - Installer Wordpress
Avant de faire cette étape, vérifions les ports disponibles/ouverts sur le système. Assurez-vous d'avoir 3 ports ouverts, le port 80, 3306 et le port 9000.
netstat -plntuLes résultats sont ci-dessous :
Ouvrez maintenant votre navigateur Web et saisissez l'URL ou l'adresse IP du serveur.
http://serverIP/
Vous pouvez voir la page d'installation de WordPress. Choisissez votre langue et cliquez sur 'Continuer '.
Remplissez les détails de votre site Web comme le titre du site, l'utilisateur administrateur et le mot de passe, votre adresse e-mail, puis cliquez sur 'Installer Wordpress '.
Vous serez redirigé vers le 'tableau de bord d'administration WordPress '.
Et ceci est mon exemple WordPress post hello world.
Wordpress a été installé avec docker-compose.
Étape 7 - Accéder au conteneur Docker
Il s'agit d'une étape supplémentaire pour accéder à un conteneur avec docker-compose. Vérifiez que tous les conteneurs sont disponibles et affichez leur statut :
docker-composer psNous avons déjà 3 conteneurs, maintenant nous pouvons essayer de nous connecter à chaque conteneur. Connectez-vous au premier conteneur Nginx avec la commande docker-compose.
docker-compose exec nginx bashnginx :nom du service sur le fichier docker-compose docker-compose.yml
bash :exécutez la commande shell bash
Vérifiez maintenant la configuration de notre hôte virtuel WordPress.
cat /etc/nginx/conf.d/wordpress.conf
Les fichiers sont disponibles dans le conteneur.
Ensuite, essayez de vous connecter au conteneur mysql, puis connectez-vous au shell mysql avec notre mot de passe sur le fichier de composition.
docker-compose exec mysql bash
mysql -u root -p
TYPE MYSQL ROOT PASSWORDVoir la liste des bases de données :
afficher les bases de données ;Vous verrez notre base de données WordPress.
Dans le conteneur 'wordpress', vous verrez tous les fichiers WordPress.
docker-compose exec wordpress bash
ls -lah
Tous les conteneurs sont accessibles.