networks:
  traefik-net:
    external: true
    name: traefik-net

volumes:
  firefly_upload:
  firefly_db:

services:
  firefly:
    image: fireflyiii/core:latest
    volumes:
      - firefly_upload:/var/www/html/storage/upload
    env_file: .env
    networks:
      - traefik-net
      - default
    depends_on:
      - db
    deploy:
      labels:
        - traefik.enable=true
        - traefik.docker.network=traefik-net
        - traefik.http.routers.firefly.rule=Host(`${HOST}`)
        - traefik.http.routers.firefly.entrypoints=${ENTRYPOINTS:-websecure}
        - traefik.http.routers.firefly.tls.certresolver=le
        - traefik.http.services.firefly.loadbalancer.server.port=8080
  db:
    image: mariadb:lts
    environment:
      - MYSQL_PASSWORD=${DB_PASSWORD}
      - MYSQL_DATABASE=${DB_DATABASE}
      - MYSQL_USER=${DB_USERNAME}
      - MYSQL_RANDOM_ROOT_PASSWORD=true
    volumes:
      - firefly_db:/var/lib/mysql
  cron:
    image: alpine
    restart: always
    command: sh -c "echo \"0 3 * * * wget -qO- http://firefly:8080/api/v1/cron/${STATIC_CRON_TOKEN}\" | crontab - && crond -f -L /dev/stdout"

#  TODO: WIP
#  importer:
#    image: fireflyiii/data-importer:latest
#    env_file:
#      - .importer.env
#    environment:
#      - FIREFLY_III_URL=http://firefly
#      - VANITY_URL=https://${HOST}
#    depends_on:
#      - firefly
#    networks:
#      - traefik-net
#      - default