Déploiement de Nginx avec Docker
Pour installer Nginx dans un conteneur, suivez ces étapes :
- Récupérez l'image officielle :
docker pull nginx - Lancez un conteneur avec mappage de port :
docker run -d --name serveur_web -p 8080:80 nginx - Vérifiez le fonctionnement :
curl localhost:8080affiche la page d'accueil de Nginx.
Remarque : Le déploiement direct dans le conteneur peut être contraignent. Utilisez le volume (-v) pour synchroniser les fichiers de configuration depuis l'hôte.
Déploiement de Redis avec Docker
Avant de lancer Redis, assurez-vous que le fichier de configuration (redis.conf) a daemonize no ou est commenté, car le mode démon entre en conflit avec le flag -d de Docker.
Exemple de commande pour démarrer Redis :
docker run -p 6379:6379 --name instance_redis --privileged=true \
-v /chemin/vers/redis.conf:/etc/redis.conf \
-v /chemin/vers/data:/data \
-d redis:6.0.8 \
redis-server /etc/redis.conf
Déploiement de Tomcat avec Docker
Créez un conteneur Tomcat :
docker run -d -p 8888:8080 --name app_tomcat tomcat
Les images d'origine peuvent être légères. Accédez au conteneur avec docker exec -it app_tomcat /bin/bash, puis copiez les fichiers de test depuis webapps.dist vers webapps pour activer l'interface web.
Déploiement de MySQL avec Docker
Pour MySQL, configurez des volumes pour persister les données, logs et configurations :
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=monMotDePasse --privileged=true \
-v /chemin/logs:/var/log/mysql \
-v /chemin/donnees:/var/lib/mysql \
-v /chemin/conf:/etc/mysql/conf.d \
--name db_principale mysql:5.7
Réplication maître-esclave de MySQL
Serveur maître :
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret123 --privileged=true \
-v /chemin_maitre/logs:/var/log/mysql \
-v /chemin_maitre/donnees:/var/lib/mysql \
-v /chemin_maitre/conf:/etc/mysql/conf.d \
--name mysql_maitre mysql:5.7
Dans le fichier de configuration (my.cnf) :
[mysqld]
server-id=1
log-bin=mysql-bin
log-error=erreur.log
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
Initialisez la sécurité avec mysql_secure_installation, puis créez un compte de réplication :
GRANT REPLICATION SLAVE ON *.* TO 'replicateur'@'%' IDENTIFIED BY 'mdpReplication';
Notez la position du binaire avec SHOW MASTER STATUS;.
Serveur esclave :
docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=secret456 --privileged=true \
-v /chemin_esclave/logs:/var/log/mysql \
-v /chemin_esclave/donnees:/var/lib/mysql \
-v /chemin_esclave/conf:/etc/mysql/conf.d \
--name mysql_esclave mysql:5.7
Configuration esclave (my.cnf) :
[mysqld]
server-id=2
binlog-ignore-db=mysql
log-bin=mysql-esclave-bin
read_only=1
Après l'initialisation de sécurité, configurez la réplication :
CHANGE MASTER TO master_host='192.168.1.100', master_port=3306, master_user='replicateur', master_password='mdpReplication', master_log_file='mysql-bin.000002', master_log_pos=1150;
Démarrez l'esclave avec START SLAVE; et vérifiez avec SHOW SLAVE STATUS\G (les champs Slave_IO_Running et Slave_SQL_Running doivent être Yes).
Automatisation de l'initialisation de MySQL
Utilisez un script Expect pour automatiser mysql_secure_installation :
#!/usr/bin/expect
spawn mysql_secure_installation
expect "Press y|Y for Yes, any other key for No:"
send "\r"
expect "New password"
send "nouveauMdp\r"
expect "Re-enter new password"
send "nouveauMdp\r"
expect "Remove anonymous users?"
send "y\r"
expect "Disallow root login remotely?"
send "n\r"
expect "Remove test database and access to it?"
send "y\r"
expect "Reload privilege tables now?"
send "y\r"
expect eof
Intégrez ce script dans un fichier .exp ou directement dans un shell. Exemple pour démarrer MySQL sans mot de passe initial puis appliquer le script :
docker run -p 3307:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes --privileged=true -d --name mysql_temp mysql:5.7
Déploiement d'Elasticsearch avec Docker
Lancez Elasticsearch avec limitation de mémoire :
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
elasticsearch:7.6.2
Surveillez les ressources avec docker stats.
Interface de gestion Docker avec Portainer
Pour une gestion graphique des conteneurs, déployez Portainer :
docker run -d -p 9000:9000 --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
--privileged=true portainer/portainer