version: '3'

# reference: https://github.com/mempool/mempool/blob/master/docker/docker-compose.yml
services:
  bitcoind:
    environment:
      BITCOIN_EXTRA_ARGS: |
        # We need to use rpcauth because we also need cookieauth. rpcpassword disabled cookie file auth.
        # Be careful if you copy the line below from the docker-compose.yml! A dollar sign is escaped.
        rpcauth=mempool:d77ee0acf132038f6aaa9d4500d745ec$$72cc78dcf18191c91d10c15ff8f7c3dbbd170c4d3107cca35d71c6bf96af2ed9
  mempool_web:
    image: mempool/frontend:v2.5.0
    restart: on-failure
    stop_grace_period: 1m
    command: "./wait-for mempool_db:3306 --timeout=720 -- nginx -g 'daemon off;'"
    expose:
      - "8080"
    environment:
      FRONTEND_HTTP_PORT: "8080"
      BACKEND_MAINNET_HTTP_HOST: "mempool_api"

  mempool_api:
    image: mempool/backend:v2.5.0
    restart: on-failure
    stop_grace_period: 1m
    command: "./wait-for-it.sh mempool_db:3306 --timeout=720 --strict -- ./start.sh"
    expose:
      - "8999"
    environment:
      MEMPOOL_BACKEND: "electrum"
      MEMPOOL_CACHE_DIR: "/backend/cache"
      ELECTRUM_HOST: "electrumx"
      ELECTRUM_PORT: "50001"
      ELECTRUM_TLS_ENABLED: "false"
      CORE_RPC_HOST: "bitcoind"
      CORE_RPC_PORT: "43782"
      CORE_RPC_USERNAME: "mempool"
      CORE_RPC_PASSWORD: "mempool"
      DATABASE_ENABLED: "true"
      DATABASE_HOST: "mempool_db"
      DATABASE_DATABASE: "mempool"
      DATABASE_USERNAME: "mempool"
      DATABASE_PASSWORD: "mempool"

  mempool_db:
    image: mariadb:10.11
    restart: on-failure
    expose:
      - "3306"
    volumes:
      - "mempool_db_datadir:/var/lib/mysql"
    environment:
      MYSQL_DATABASE: "mempool"
      MYSQL_USER: "mempool"
      MYSQL_PASSWORD: "mempool"
      MYSQL_ROOT_PASSWORD: "admin"

  btcpayserver:
    environment:
      BTCPAY_EXTERNALSERVICES: "Mempool Explorer:/mempool"

volumes:
  mempool_db_datadir:

required:
  - "opt-add-electrumx"

incompatible:
  - pruning
