Le fichier docker-compose.yml contient la définition des services, des volumes, des réseaux, et des autres configurations nécessaires pour exécuter une ou plusieurs applications conteneurisées.
Voici ci-dessous un docker-compose complet pour MySQL :
version: '3.8'
networks:
mysql_network:
driver: bridge
volumes:
mysql_data:
mysql_dumps:
services:
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
container_name: phpmyadmin_container
environment:
PMA_HOST: mysql # Nom du service MySQL auquel phpMyAdmin doit se connecter
PMA_USER: root # Utilisateur personnalisé MySQL
PMA_PASSWORD: root_password # Mot de passe de l'utilisateur MySQL
ports:
- "8080:80" # Port exposé pour accéder à phpMyAdmin (http://localhost:8080)
networks:
- mysql_network
restart: always # Redémarrage automatique en cas d'arrêt
mysql:
image: mysql:8.0
container_name: mysql_container
environment:
MYSQL_ROOT_PASSWORD: root_password # Remplacez par un mot de passe sécurisé
MYSQL_DATABASE: my_database # Nom de la base de données initiale
MYSQL_USER: user # Utilisateur personnalisé
MYSQL_PASSWORD: user_password # Mot de passe de l'utilisateur personnalisé
MYSQL_ALLOW_EMPTY_PASSWORD: "no" # Empêche les mots de passe vides pour plus de sécurité
MYSQL_RANDOM_ROOT_PASSWORD: "no" # Génère un mot de passe root aléatoire si activé (non ici)
MYSQL_ONETIME_PASSWORD: "no" # Force un changement de mot de passe à la première connexion
MYSQL_LOG_CONSOLE: "true" # Pour afficher les logs dans la console
volumes:
- ./mysql_data:/var/lib/mysql # Point de montage pour les données MySQL persistantes
- ./mysql_dumps:/docker-entrypoint-initdb.d # Point de montage pour les dumps à importer automatiquement
ports:
- "3306:3306" # Port exposé pour accéder au service MySQL
networks:
- mysql_network
restart: always # Redémarrage automatique en cas d'arrêt
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u root --password=$$MYSQL_ROOT_PASSWORD || exit 1"]
interval: 30s
timeout: 10s
retries: 5
deploy:
resources:
limits:
memory: 512M # Limite la mémoire à 512 Mo
cpus: "0.5" # Limite l'utilisation du CPU à 50 %
reservations:
memory: 256M # Réserve 256 Mo de mémoire minimum
cpus: "0.2" # Réserve 20 % du CPU minimum
2. Lancer Docker Compose
Pour démarrer les services définis dans le fichier docker-compose.yml, exécute la commande suivante à la racine du projet (là où se trouve le fichier docker-compose.yml) :
docker-compose up
3. Exécuter Docker Compose en arrière-plan (optionnel)
Si tu veux que Docker Compose démarre en arrière-plan (mode détaché), ajoute l'option -d :
docker-compose up -d
4. Arrêter les services
Pour arrêter les services lancés par Docker Compose, utilise la commande suivante :
docker-compose down
5. Voir les logs (optionnel)
Tu peux aussi afficher les logs des conteneurs en temps réel :