services:

  backend:
    container_name: quizzapp-backend
    image: <quizzapp-backend-docker-image-url>
    ports:
      - 8080:8080
    environment:
      FRONTEND_BASE_URL: https://<domain-name>
      BACKEND_BASE_URL: https://<domain-name>/api
      DATASOURCE_URL: jdbc:postgresql://<database-url>:<database-port>/<database-name>
      DATASOURCE_USERNAME: <datasource-username>
      DATASOURCE_PASSWORD: <datasource-password>
      GITHUB_CLIENT_ID: <github-client-id>
      GITHUB_CLIENT_SECRET: <github-client-secret>
      GOOGLE_CLIENT_ID: <google-client-id>
      GOOGLE_CLIENT_SECRET: <google-client-secret>
      JWT_SECRET: <jwt-secret>
      ADMIN_EMAIL: <admin-email>

  frontend:
    container_name: quizzapp-frontend
    image: <quizzapp-frontend-docker-image-url>
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./nginx/conf/:/etc/nginx/conf.d/:ro
      - ./certbot/www:/var/www/certbot/:ro
      - ./certbot/conf/:/etc/nginx/ssl/:ro

  certbot:
    container_name: quizzapp-certbot
    image: certbot/certbot:v2.10.0
    volumes:
      - ./certbot/www/:/var/www/certbot/:rw
      - ./certbot/conf/:/etc/letsencrypt/:rw


  # Voici la commande pour générer une certificat SSL via l'outil certbot:
  # docker compose run certbot certonly --webroot --webroot-path /var/www/certbot/ -d <domain-name>
  # 
  # Traitement:
  # 1. Certbot ajoute des fichiers de vérification de notre <domain-name> dans le dossier ./certbot/www/
  #    qui correspond au dossier /var/www/certbot/ du container frontend
  #
  # 2. Certbot essaie de récupèrer ces fichiers en utilisant l'URL http://<domain-name>/.well-known/acme-challenge/
  #    et c'est notre serveur nginx qui va les retourner (Cf. nginx.http.conf)
  #
  # 3. Une fois validé, Certbot génère notre certificat SSL dans le dossier ./certbot/conf/
  #    qui correspond au dossier /etc/nginx/ssl/ du container frontend (Cf. nginx.https.conf)
