# Adopted from https://github.com/blockscout/blockscout/blob/v4.1.8-beta/docker-compose/docker-compose-no-build-hardhat-network.yml
# This docker-compose only supports upto blockscout 4.x.
version: '3.8'

services:
  db:
    image: postgres:14
    restart: always
    container_name: 'postgres'
    environment:
        POSTGRES_PASSWORD: ''
        POSTGRES_USER: 'postgres'
        POSTGRES_HOST_AUTH_METHOD: 'trust'
    command: ['postgres', '-c', 'max_connections=1000']

  blockscout:
    depends_on:
      - db
    image: blockscout/blockscout:${DOCKER_TAG:-latest}
    restart: always
    container_name: 'blockscout'
    links:
      - db:database
    command:
      - /bin/bash
      - -c
      - |
        set -e
        mkdir -p logs/prod

        if [ ${DOCKER_DEBUG:-0} -eq 0 ]; then
          while ! nc -z db 5432; do
            sleep 0.1
          done
          echo "Migrating database"
          bin/blockscout eval "Elixir.Explorer.ReleaseTasks.create_and_migrate()" >> logs/prod/migrate.log
          echo "Starting server"
          bin/blockscout daemon
          sleep infinity
        else
          bin/blockscout eval "Elixir.Explorer.ReleaseTasks.create_and_migrate()"
          bin/blockscout start
        fi
    extra_hosts:
      - 'host.docker.internal:host-gateway'
    env_file:
      -  ./envs/common-blockscout.env
    environment:
        ETHEREUM_JSONRPC_VARIANT: 'geth'
        ETHEREUM_JSONRPC_HTTP_URL: ${DOCKER_RPC_HTTP_URL:-http://host.docker.internal:8545/}
        INDEXER_DISABLE_PENDING_TRANSACTIONS_FETCHER: 'true'
        INDEXER_DISABLE_INTERNAL_TRANSACTIONS_FETCHER: ${DOCKER_DISABLE_TRACER:-true}
        DATABASE_URL: postgresql://postgres:@db:5432/blockscout?ssl=false
        ECTO_USE_SSL: 'false'
        SECRET_KEY_BASE: '56NtB48ear7+wMSf0IQuWDAAazhpb31qyc7GiyspBP2vh7t5zlCsF5QDv76chXeN'
    ports:
      - ${DOCKER_LISTEN:-4000}:4000

