Docker Compose : Stack Web Simple (Web App + BDD)

Catégorie: Docker Compose / YAML | Langage: YAML

Description

Ce fichier docker-compose.yml fournit une structure de base pour lancer une application web (par exemple en PHP, Node.js, Python...) avec une base de données PostgreSQL associée. Il utilise des volumes nommés pour la persistance et des réseaux Docker pour isoler la communication.

Points Clés : Pensez à remplacer les placeholders (YOUR_SECURE_PASSWORD, your_app_image:latest) et à adapter les chemins des volumes si nécessaire. L'utilisation de secrets Docker est recommandée pour gérer les mots de passe en production.

Code


version: '3.8'

services:
  # Service Base de Données
  database:
    image: postgres:15-alpine # Utilisation d'une image Alpine légère
    container_name: myapp_db
    restart: always
    volumes:
      # Monter un volume nommé pour la persistance des données
      - app_db_data:/var/lib/postgresql/data
    environment:
      # Utiliser des secrets ou des variables d'environnement pour les mots de passe en production
      POSTGRES_PASSWORD: YOUR_SECURE_PASSWORD
      POSTGRES_USER: app_user
      POSTGRES_DB: app_db
    networks:
      - backend_network # Isoler la BDD sur un réseau interne

  # Service Application Web (ex: PHP, Node, Python...)
  webapp:
    # Remplacer par votre image ou utilisez 'build: .' si vous avez un Dockerfile
    image: your_app_image:latest
    # build: .
    container_name: myapp_web
    restart: always
    ports:
      # Exposer le port 80 de l'application sur le port 8080 de l'hôte
      - "8080:80"
    volumes:
      # Monter le code source de l'application (si développement)
      # - ./app_code:/var/www/html
      # Monter un volume pour les données persistantes de l'application (uploads, etc.)
      - app_web_data:/var/www/data
    environment:
      # Variables nécessaires pour se connecter à la BDD
      DB_HOST: database # Nom du service BDD défini ci-dessus
      DB_NAME: app_db
      DB_USER: app_user
      DB_PASSWORD: YOUR_SECURE_PASSWORD
      # Autres variables d'environnement pour l'application...
      APP_ENV: production
    depends_on:
      - database # S'assurer que la BDD démarre avant l'application
    networks:
      - frontend_network # Réseau pour l'exposition externe (via reverse proxy par ex.)
      - backend_network  # Réseau pour la communication avec la BDD

# Définition des réseaux
networks:
  frontend_network:
    driver: bridge
  backend_network:
    driver: bridge

# Définition des volumes nommés
volumes:
  app_db_data:
  app_web_data: