manniru
11/17/2018 - 11:16 AM

Docker Compose file for https://github.com/javahippie/geth-dev

version: "3"
services:
  geth-bootnode:
    hostname: geth-bootnode
    environment: 
      - nodekeyhex=08f0e1dee5c1b4645f3331a566009e41a4514b6cd28656d63d0449ecf812812b #Needs to be fix, so that the miners know the resulting enode id
    build:
      context: ./bootnode
    ports: 
      - 30301:30301/udp
    networks:
      chainnet: 
        ipv4_address: 172.25.0.101 # The miners need to know the IP address later on

  geth-dev-miner-1:
    hostname: geth-dev-miner-1
    depends_on: 
      - geth-bootnode
    environment:
      - address=0x8cc5a1a0802db41db826c2fcb72423744338dcb0 #derived from the private key which is passed in the args
      - bootnodeId=76a8171707eca17647a47ca99ffd348927dfa60102792ea349a25d5192e61855be83b786e376276a306afcceea4ffd1c9c77e4370b417efc39f328a0d068004c #derived from the nodekeyhex of the bootnode
      - bootnodeIp=172.25.0.101  
    build: 
      context: ./miner
      args:
        privatekey: df504d175ae63abf209bad9dda965310d99559620550e74521a6798a41215f46 # Please don't do something like this in production, okay?
        password: pass
    container_name: geth-miner-1
    ports:
      - 8545:8545
    volumes:
      - eth-data-1:/root/.ethash
    networks:
      chainnet:
        ipv4_address: 172.25.0.102 # The monitor needs to know this address

  geth-dev-miner-2:
    hostname: geth-dev-miner-2
    depends_on: 
      - geth-bootnode
    environment:
      - address=0x3590aca93338b0721966a8d0c96ebf2c4c87c544 #derived from the private key which is passed in the args
      - bootnodeId=76a8171707eca17647a47ca99ffd348927dfa60102792ea349a25d5192e61855be83b786e376276a306afcceea4ffd1c9c77e4370b417efc39f328a0d068004c #derived from the nodekeyhex of the bootnode
      - bootnodeIp=172.25.0.101
    build: 
      context: ./miner
      args:
        privatekey: bc5b578e0dcb2dbf98dd6e5fe62cb5a28b84a55e15fc112d4ca88e1f62bd7c35
        password: word
    container_name: geth-miner-2
    ports:
      - 8546:8545
    volumes:
     - eth-data-2:/root/.ethash
    networks:
      chainnet:
        ipv4_address: 172.25.0.104

  geth-dev-miner-3:
     hostname: geth-dev-miner-3
     depends_on: 
       - geth-bootnode
     environment:
       - address=0x3590aca93338b0721966a8d0c96ebf2c4c87c544 #derived from the private key which is passed in the args
       - bootnodeId=76a8171707eca17647a47ca99ffd348927dfa60102792ea349a25d5192e61855be83b786e376276a306afcceea4ffd1c9c77e4370b417efc39f328a0d068004c #derived from the nodekeyhex of the bootnode
       - bootnodeIp=172.25.0.101
     build:
       context: ./node
       args:
         privatekey: bc5b578e0dcb2dbf98dd6e5fe62cb5a28b84a55e15fc112d4ca88e1f62bd7c35
         password: word
     container_name: geth-miner-3
     ports:
       - 8547:8545
     volumes:
      - eth-data-3:/root/.ethash
     networks:
       chainnet:
         ipv4_address: 172.25.0.110

  geth-monitor-backend:
    hostname: geth-monitor-backend
    depends_on: 
      - geth-dev-miner-1
    build:
      context: ./monitor-backend
    container_name: monitor-backend
    networks:
      chainnet:

  geth-monitor-frontend:
   hostname: geth-monitor-frontend
   depends_on: 
     - geth-monitor-backend
   build:
     context: ./monitor-frontend
   container_name: monitor-frontend
   ports:
    - 3000:3000
   networks:
    chainnet:
      ipv4_address: 172.25.0.103

networks:
  chainnet:
    driver: bridge
    ipam:
      config:
      - subnet: 172.25.0.0/24

volumes:
  eth-data-1:
  eth-data-2:
  eth-data-3: