name: torrust
services:

  index-gui:
    build:
      context: .
      dockerfile: ./Containerfile
      target: release
      args:
        - TORRUST_INDEX_GUI_API_BASE_URL=${TORRUST_INDEX_GUI_API_BASE_URL:-http://localhost:3001/v1}
    tty: true
    environment:
      - USER_ID=${USER_ID}
      - NUXT_PUBLIC_API_BASE=${TORRUST_INDEX_GUI_API_BASE_URL:-http://localhost:3001/v1}
      - NITRO_HOST=${NITRO_HOST:-::}
      - NITRO_PORT=${NITRO_PORT:-3000}
    ports:
      - 3000:3000
      - 24678:24678
    volumes:
      - ./storage/index-gui/log:/var/log/torrust/index-gui:Z
    depends_on:
      - index
      - tracker
      - mailcatcher
      - mysql

  index:
    image: torrust/index:develop
    tty: true
    environment:
      - USER_ID=${USER_ID}
      - TORRUST_INDEX_CONFIG_TOML=${TORRUST_INDEX_CONFIG_TOML}
      - TORRUST_INDEX_DATABASE=${TORRUST_INDEX_DATABASE:-e2e_testing_sqlite3}
      - TORRUST_INDEX_DATABASE_DRIVER=${TORRUST_INDEX_DATABASE_DRIVER:-sqlite3}
      - TORRUST_INDEX_CONFIG_OVERRIDE_TRACKER__TOKEN=${TORRUST_INDEX_CONFIG_OVERRIDE_TRACKER__TOKEN:-MyAccessToken}
      - TORRUST_INDEX_CONFIG_OVERRIDE_AUTH__USER_CLAIM_TOKEN_PEPPER=${TORRUST_INDEX_CONFIG_OVERRIDE_AUTH__USER_CLAIM_TOKEN_PEPPER:-MaxVerstappenWC2021}
      - TORRUST_INDEX_API_CORS_PERMISSIVE=${TORRUST_INDEX_API_CORS_PERMISSIVE:-true}
    networks:
      - server_side
    ports:
      - 3001:3001
    volumes:
      - ./storage/index/lib:/var/lib/torrust/index:Z
      - ./storage/index/log:/var/log/torrust/index:Z
      - ./storage/index/etc:/etc/torrust/index:Z
    depends_on:
      - tracker
      - mailcatcher
      - mysql

  tracker:
    image: torrust/tracker:develop
    tty: true
    environment:
      - USER_ID=${USER_ID}
      - TORRUST_TRACKER_CONFIG_TOML=${TORRUST_TRACKER_CONFIG_TOML}
      - TORRUST_TRACKER_DATABASE=${TORRUST_TRACKER_DATABASE:-e2e_testing_sqlite3}
      - TORRUST_TRACKER_CONFIG_OVERRIDE_CORE__DATABASE__DRIVER=${TORRUST_TRACKER_CONFIG_OVERRIDE_CORE__DATABASE__DRIVER:-sqlite3}
      - TORRUST_TRACKER_CONFIG_OVERRIDE_HTTP_API__ACCESS_TOKENS__ADMIN=${TORRUST_TRACKER_CONFIG_OVERRIDE_HTTP_API__ACCESS_TOKENS__ADMIN:-MyAccessToken}
    networks:
      - server_side
    ports:
      - 6969:6969/udp
      - 7070:7070
      - 1212:1212
    volumes:
      - ./storage/tracker/lib:/var/lib/torrust/tracker:Z
      - ./storage/tracker/log:/var/log/torrust/tracker:Z
      - ./storage/tracker/etc:/etc/torrust/tracker:Z
    depends_on:
      - mysql

  mailcatcher:
    image: dockage/mailcatcher:0.8.2
    networks:
      - server_side
    ports:
      - 1080:1080
      - 1025:1025

  mysql:
    image: mysql:8.0
    command: '--default-authentication-plugin=mysql_native_password'
    healthcheck:
      test:
        [
          'CMD-SHELL',
          'mysqladmin ping -h 127.0.0.1 --password="$$(cat /run/secrets/db-password)" --silent'
        ]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      - MYSQL_ROOT_HOST=%
      - MYSQL_ROOT_PASSWORD=root_secret_password
      - MYSQL_DATABASE=torrust_index_backend
      - MYSQL_USER=db_user
      - MYSQL_PASSWORD=db_user_secret_password
    networks:
      - server_side
    ports:
      - 3306:3306
    volumes:
      - mysql_data:/var/lib/mysql

networks:
  server_side: {}

volumes:
  mysql_data: {}
