Docker-compose

1. Créer un fichier docker-compose.yml

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 :

docker-compose logs

Last updated