version: '3.3'

services:
  leantime_db:
    image: mysql:8.0
    container_name: leantime-mysql
    volumes:
      - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/leantime/mysql:/var/lib/mysql
    restart: unless-stopped
    env_file: ./.env
    command: --character-set-server=UTF8MB4 --collation-server=UTF8MB4_unicode_ci
    #networks:
    #  - proxy

  leantime:
    image: leantime/leantime:latest
    container_name: leantime
    restart: unless-stopped
    env_file: ./.env
    volumes:
      - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/leantime/public_data:/var/www/html/public/userfiles
      - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/leantime/data:/var/www/html/userfiles
    ports:
      - "8080:80"                                                       # The port to expose and access Leantime
    depends_on:
      - leantime_db                                                     # Don't start Leantime unless leantime_db is running
    #networks:
    #  - proxy
    #labels:
    #  - traefik.enable=true
    #  - traefik.http.routers.leantime.rule=Host(`leantime.example.com`)
    #  - traefik.http.services.leantime.loadbalancer.server.port=80
    #  - traefik.http.middlewares.limit.buffering.maxRequestBodyBytes=50000000 # optional, only necessary for enabled file uploads
    #  - traefik.http.middlewares.limit.buffering.maxResponseBodyBytes=50000000 # optional, only necessary for enabled file uploads
    #  - traefik.http.middlewares.limit.buffering.memRequestBodyBytes=50000000 # optional, only necessary for enabled file uploads
    #  - traefik.http.middlewares.limit.buffering.memResponseBodyBytes=50000000 # optional, only necessary for enabled file uploads    
    #  - traefik.docker.network=proxy
    #  # Part for optional traefik middlewares
    #  - traefik.http.routers.leantime.middlewares=local-ipwhitelist@file,authelia@file,basic-auth@file

#networks:
#  proxy:
#    external: true