version: '3.7'

services:
  fixturenet-eth-bootnode-geth:
    restart: always
    hostname: fixturenet-eth-bootnode-geth
    env_file:
      - ../config/fixturenet-eth/fixturenet-eth.env
    environment:
      RUN_BOOTNODE: "true"
    image: cerc/fixturenet-eth-geth:local
    volumes:
      - fixturenet_eth_bootnode_geth_data:/root/ethdata
    ports:
      - "9898"
      - "30303"

  fixturenet-eth-geth-1:
    restart: always
    hostname: fixturenet-eth-geth-1
    cap_add:
      - SYS_PTRACE
    environment:
      CERC_REMOTE_DEBUG: ${CERC_REMOTE_DEBUG:-true}
      CERC_RUN_STATEDIFF: ${CERC_RUN_STATEDIFF:-detect}
      CERC_STATEDIFF_DB_NODE_ID: 1
      CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
    env_file:
      - ../config/fixturenet-eth/fixturenet-eth.env
    image: cerc/fixturenet-eth-geth:local
    volumes:
      - fixturenet_eth_geth_1_data:/root/ethdata
    healthcheck:
      test: ["CMD", "nc", "-v", "localhost", "8545"]
      interval: 30s
      timeout: 10s
      retries: 10
      start_period: 3s
    depends_on:
      - fixturenet-eth-bootnode-geth
    ports:
      - "8545"
      - "8546"
      - "40000"
      - "6060"

  fixturenet-eth-geth-2:
    restart: always
    hostname: fixturenet-eth-geth-2
    healthcheck:
      test: ["CMD", "nc", "-v", "localhost", "8545"]
      interval: 30s
      timeout: 10s
      retries: 10
      start_period: 3s
    environment:
      CERC_KEEP_RUNNING_AFTER_GETH_EXIT: "true"
    env_file:
      - ../config/fixturenet-eth/fixturenet-eth.env
    image: cerc/fixturenet-eth-geth:local
    depends_on:
      - fixturenet-eth-bootnode-geth
    volumes:
      - fixturenet_eth_geth_2_data:/root/ethdata
    ports:
      - "8545"
      - "8546"

  fixturenet-eth-bootnode-lighthouse:
    restart: always
    hostname: fixturenet-eth-bootnode-lighthouse
    environment:
      RUN_BOOTNODE: "true"
    image: cerc/fixturenet-eth-lighthouse:local

  fixturenet-eth-lighthouse-1:
    restart: always
    hostname: fixturenet-eth-lighthouse-1
    healthcheck:
      test: ["CMD", "wget", "--tries=1", "--connect-timeout=1", "--quiet", "-O", "-", "http://localhost:8001/eth/v2/beacon/blocks/head"]
      interval: 30s
      timeout: 10s
      retries: 10
      start_period: 30s
    env_file:
      - ../config/fixturenet-eth/fixturenet-eth.env
    environment:
      NODE_NUMBER: "1"
      ETH1_ENDPOINT: "http://fixturenet-eth-geth-1:8545"
      EXECUTION_ENDPOINT: "http://fixturenet-eth-geth-1:8551"
    image: cerc/fixturenet-eth-lighthouse:local
    volumes:
      - fixturenet_eth_lighthouse_1_data:/opt/testnet/build/cl
    depends_on:
      fixturenet-eth-bootnode-lighthouse:
        condition: service_started
      fixturenet-eth-geth-1:
        condition: service_healthy
    ports:
      - "8001"

  fixturenet-eth-lighthouse-2:
    restart: always
    hostname: fixturenet-eth-lighthouse-2
    healthcheck:
      test: ["CMD", "wget", "--tries=1", "--connect-timeout=1", "--quiet", "-O", "-", "http://localhost:8001/eth/v2/beacon/blocks/head"]
      interval: 30s
      timeout: 10s
      retries: 10
      start_period: 30s
    env_file:
      - ../config/fixturenet-eth/fixturenet-eth.env
    environment:
      NODE_NUMBER: "2"
      ETH1_ENDPOINT: "http://fixturenet-eth-geth-2:8545"
      EXECUTION_ENDPOINT: "http://fixturenet-eth-geth-2:8551"
      LIGHTHOUSE_GENESIS_STATE_URL: "http://fixturenet-eth-lighthouse-1:8001/eth/v2/debug/beacon/states/0"
    image: cerc/fixturenet-eth-lighthouse:local
    volumes:
      - fixturenet_eth_lighthouse_2_data:/opt/testnet/build/cl
    depends_on:
      fixturenet-eth-bootnode-lighthouse:
        condition: service_started
      fixturenet-eth-geth-2:
        condition: service_healthy

volumes:
  fixturenet_eth_bootnode_geth_data:
  fixturenet_eth_geth_1_data:
  fixturenet_eth_geth_2_data:
  fixturenet_eth_lighthouse_1_data:
  fixturenet_eth_lighthouse_2_data: