version: '3.4'

networks:
  traefik:
    external: true

services:
###########
## MYSQL ##
###########
## MariaDB is currently not supported and neither is later versions of MySQL this may change.
## https://hub.docker.com/r/_/mariadb/
  mysql:
    image: mysql:5.7.23
    restart: always
    networks:
      traefik:
        ipv4_address: 10.5.1.10
        aliases:
          - mysql
    environment:
      ## These variables are stored in the .env file next to this docker-compose.yml file.
      ## I will include a default .env file and .gitignore the ".env" pattern so you should be able to just git pull in the future if you need to.
      MYSQL_SERVER: ${MYSQL_SERVER:-10.5.1.10}
      MYSQL_USER: ${MYSQL_USER:-changeme}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD:-changeme}
      MYSQL_DATABASE: ${MYSQL_DATABASE:-chainquery}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-changeme}
    expose:
      - 3306
    volumes:
      - ./data/db:/var/lib/mysql
      - ./my.cnf:/etc/mysql/conf.d/chainquery-optimizations.cnf

#######################
## Adminer container ##
#######################
  adminer:
    image: adminer
    # restart: always
    links:
      - "mysql:database"
    depends_on:
      - mysql
    labels:
      # https://docs.traefik.io/user-guide/docker-and-lets-encrypt/
      - "traefik.backend=adminer"
      - "traefik.docker.network=lbrynet"
      - "traefik.frontend.rule=Host:adminer.lbry-demo.nixc.us"
      - "traefik.expose=true"
      - "traefik.port=8080"
    # healthcheck:
    #   test: ["CMD", "curl", "--fail", "http://localhost:8080/", "||", "exit", "1"]
    networks:
      traefik:
        ipv4_address: 10.5.1.19
        aliases:
          - adminer

################
## Chainquery ##
################
  chainquery:
    build:
      context: .
      target: app
    restart: always
    networks:
      traefik:
        ipv4_address: 10.5.1.3
    labels:
      - "traefik.expose=false"
    expose:
      - 6300
    depends_on:
      - mysql