version: "3.9"
name: serai-dev

volumes:
  serai-node:
  serai-alice:
  serai-bob:
  serai-charlie:
  serai-dave:
  serai-eve:
  serai-ferdie:

services:
  # Coin services

  bitcoin:
    profiles:
      - bitcoin
      - coins
    build:
      context: ./coins/bitcoin/
    restart: unless-stopped
    volumes:
      - "./coins/bitcoin/scripts:/scripts"
    entrypoint: /scripts/entry-dev.sh
    ports:
      - "18443:18443"

  ethereum:
    profiles:
      - ethereum
      - coins
    build:
      context: ./coins/ethereum/
    restart: unless-stopped
    volumes:
      - "./coins/ethereum/scripts:/scripts"
    entrypoint: /scripts/entry-dev.sh

  monero:
    profiles:
      - monero
      - coins
    build:
      context: ./coins/monero/
    restart: unless-stopped
    volumes:
      - "./coins/monero/scripts:/scripts"
    entrypoint: /scripts/entry-dev.sh
    ports:
      - "18081:18081"

  # Infrastructure

  message-queue:
    profiles:
      - message-queue
    build:
      context: ../
      dockerfile: ./deploy/message-queue/Dockerfile
    restart: unless-stopped
    volumes:
      - "./message-queue/scripts:/scripts"
    entrypoint: /scripts/entry-dev.sh
    ports:
      - "2287:2287"

  processor:
    profiles:
      - processor
    build:
      context: ../
      dockerfile: ./deploy/processor/Dockerfile
    restart: unless-stopped
    volumes:
      - "./processor/scripts:/scripts"
    entrypoint: /scripts/entry-dev.sh

  # Serai services

  _serai:
    &serai_defaults
    restart: unless-stopped
    image: serai:dev
    profiles:
      - _
    build:
      context: ../
      dockerfile: ./deploy/serai/Dockerfile
      args:
        TAG: serai
    entrypoint: /scripts/entry-dev.sh
    volumes:
      - "./serai/scripts:/scripts"

  serai-node:
    <<: *serai_defaults
    hostname: serai-node
    profiles:
      - serai
    environment:
      CHAIN: local
      NAME: node

  serai-alice:
    <<: *serai_defaults
    hostname: serai-alice
    profiles:
      - alice
      - cluster-sm
      - cluster-lg
    environment:
      CHAIN: local
      NAME: alice
      VALIDATOR: true

  serai-bob:
    <<: *serai_defaults
    hostname: serai-bob
    profiles:
      - bob
      - cluster-sm
      - cluster-lg
    environment:
      CHAIN: local
      NAME: bob
      VALIDATOR: true

  serai-charlie:
    <<: *serai_defaults
    hostname: serai-charlie
    profiles:
      - charlie
      - cluster-sm
      - cluster-lg
    environment:
      CHAIN: local
      NAME: charlie
      VALIDATOR: true

  serai-dave:
    <<: *serai_defaults
    hostname: serai-dave
    profiles:
      - dave
      - cluster-lg
    environment:
      CHAIN: local
      NAME: dave

  serai-eve:
    <<: *serai_defaults
    hostname: serai-eve
    profiles:
      - eve
      - cluster-lg
    environment:
      CHAIN: local
      NAME: eve

  serai-ferdie:
    <<: *serai_defaults
    hostname: serai-ferdie
    profiles:
      - ferdie
      - cluster-lg
    environment:
      CHAIN: local
      NAME: ferdie