version: '3.8'

services:
  traefik-ja:
    image: "traefik:v2.5"
    command:
      #- "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"

    networks:
      - external
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  websocket-ja:
    hostname: websocket-ja
    image: git.h2-invent.com/meetling/websocket:1.0.12
    restart: unless-stopped
    extra_hosts:
      - "<clientUrl>:<hostIp>"
    env_file:
      - ./.env
      - ./.env.local
      - ./.env.custom
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.websocket-ja.rule=Host(`<clientUrl>`) && PathPrefix(`/ws`)"
      - "traefik.http.routers.websocket-ja.entrypoints=web"
    networks:
      - external
      - internal

  #Here is the Jitsi-Admin app
  app-ja:
    image: git.h2-invent.com/meetling/application:1.0.12
    restart: unless-stopped
    depends_on:
      db-ja:
        condition: service_healthy
    env_file:
      - ./.env
      - ./.env.local
      - ./.env.custom
    extra_hosts:
      - "<clientUrl>:<hostIp>"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.app-ja.rule=Host(`<clientUrl>`)"
      - "traefik.http.routers.app-ja.entrypoints=web"
    volumes:
      - theme_data:/var/www/html/theme
      - image_upload:/var/www/html/public/uploads/images
      - theme_assests_data:/var/www/html/public/theme
    networks:
      - external
      - internal

  db-ja:
    image: mariadb:latest
    hostname: db-ja
    healthcheck:
      test: [ "CMD", "mariadb-admin" ,"ping", "-h", "localhost","-ptest" ]
      timeout: 20s
      retries: 10
    restart: unless-stopped
    env_file:
      - ./.env.local
    environment:
      MARIADB_ROOT_PASSWORD: test
    volumes:
      - mariadb:/var/lib/mysql
      - ./mysql-initdb:/docker-entrypoint-initdb.d
    networks:
      - internal

  keycloak-ja:
    image: quay.io/keycloak/keycloak:22.0.3
    depends_on:
      db-ja:
        condition: service_healthy
    env_file:
      - ./.env.local
    restart: unless-stopped
    command:
      - start-dev
      - --import-realm
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.keycloak-ja.rule=Host(`<clientUrl>`) && PathPrefix(`/keycloak`)"
      - "traefik.http.routers.keycloak-ja.entrypoints=web"
      - "traefik.http.services.keycloak-ja.loadbalancer.server.port=8080"
    volumes:
      - ./keycloak/:/opt/keycloak/data/import
    networks:
      - external
      - internal

networks:
  external:
  internal:

volumes:
  mariadb:
  image_upload:
  theme_data:
  theme_assests_data: