version: '3'
volumes:
  nextcloud:
  db:

networks:
  proxy:
    external: true
  nxc:
    external: false

services:
  reverse-proxy:
    # The official v2 Traefik docker image
    image: traefik:latest
    container_name: traefik
    # Enables the web UI and tells Traefik to listen to docker
    command: --api.insecure=true --providers.docker
    ports:
      # The HTTP port
      - "80:80"
      - "443:443"
      # The Web UI (enabled by --api.insecure=true)
      - "8080:8080"
    volumes:
      # So that Traefik can listen to the Docker events
      - /var/run/docker.sock:/var/run/docker.sock:ro
      # Map the static configuration into the container
      - ./config/static.yml:/etc/traefik/traefik.yml:ro
      # Map the dynamic configuration into the container
      - ./config/dynamic.yml:/etc/traefik/dynamic.yml:ro
      # Map the certificats into the container
      - ./certs:/etc/certs:ro
    networks:
      - proxy
  
  db:
    image: mariadb:10.5
    container_name: db
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - db:/var/lib/mysql
    networks:
      - nxc
    environment:
      - MYSQL_ROOT_PASSWORD=Azerty1+
      - MYSQL_PASSWORD=Azerty1+
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    container_name: app
    restart: always
    ports:
      - 8081:80
    #links:
    depends_on:
      - db
    volumes:
      - nextcloud:/var/www/html
    networks:
      - proxy
      - nxc
    labels:
#      - "traefik.enable=true"
      - "traefik.http.routers.app.rule=Host(`mon.nxc`)"
      - "traefik.http.routers.app.tls=true"
      - "traefik.enable=true"
      - "traefik.docker.network=proxy"
        #      - "traefik.http.routers.app.entrypoints=websecure"
        #      - "traefik.http.routers.app.rule=Host(`mon.nxc`)"
      - "traefik.http.routers.app.service=app-service"
      - "traefik.http.services.app-service.loadbalancer.server.port=80"
    environment:
      - MYSQL_PASSWORD=Azerty1+
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db