services:
  mc:
    image: itzg/minecraft-server
    ports:
      - "25565:25565"
    environment:
      EULA: "true"
      MOD_PLATFORM: AUTO_CURSEFORGE
      # allocate from https://console.curseforge.com/ and set in .env file
      CF_API_KEY: ${CF_API_KEY}
      CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/all-the-mods-8
      CF_FILENAME_MATCHER: "1.0.6"
      MEMORY: 4G
    volumes:
      - mc-data:/data
      - ../downloads:/downloads
  # Since Docker's default volume driver creates volumes owned by root, this
  # init container will change ownership to match final UID of mc service, above
  init-filebrowser:
    image: filebrowser/filebrowser
    entrypoint: sh -c
    command:
      - "chown -R 1000: /database"
    restart: no
    volumes:
      - filebrowser-db:/database
  filebrowser:
    image: filebrowser/filebrowser
    depends_on:
      init-filebrowser:
        condition: service_completed_successfully
    user: "1000:1000"
    environment:
      FB_DATABASE: /database/filebrowser.db
    volumes:
      # Default FB_ROOT is /srv
      # In this example, the left-side needs to be the same as /data volume of mc service
      - mc-data:/srv
      - filebrowser-db:/database
    ports:
      - "25580:80"

volumes:
  mc-data: {}
  filebrowser-db: {}