dHealthなStatisticsServiceを作ってみる

StatisticsServiceとはスゴく簡単に言うとノードリスト作るやつ。
見たことある方もいるかと思います。
こういうやつです。

https://symbol.services/nodes
https://testnet.symbol.services/nodes

これのdHealth版を自分で作ってしまおうというのが今回の話。
githubに書かれている事に沿って行けばOKなんですよね…

dockerとdocker-composeは使えるようにしておいて下さい。

インストール

git clone https://github.com/symbol/symbol-statistics-service.git

dockerイメージ作成

cd symbol-statistics-service
docker build -t symbol-statistics-service .

作ったイメージを確認。

$ docker image ls
REPOSITORY                  TAG          IMAGE ID       CREATED              SIZE
symbol-statistics-service   latest       04119a5f479d   About a minute ago   374MB
node                        lts-alpine   e5065cc78074   30 hours ago         112MB

docker-compose.yml作成

version: "3"
services:
    db:
        environment:
            MONGO_INITDB_DATABASE: statistics-service
        container_name: statistics-service-db
        restart: always
        image: mongo:latest
        volumes:
            - mongo:/data/db
            - mongo:/data/configdb
    app:
        container_name: statistics-service
        restart: always
        image: symbol-statistics-service:latest
        environment:
            - PORT=4001
            - MONGODB_ENDPOINT=mongodb://db:27017
            - NODE_MONITOR_SCHEDULE_INTERVAL=15000
            - CHAIN_HEIGHT_MONITOR_SCHEDULE_INTERVAL=15000
            - GEOLOCATION_MONITOR_SCHEDULE_INTERVAL=30000
            - NODES=[
                "http://dual-01.dhealth.cloud:3000",
                "http://dhp.allnodes.me:3000",
                "http://dual-02.dhealth.cloud:3000",
                "http://api-02.dhealth.cloud:3000",
                "http://dhealth.vistiel-arch.jp:3000",
                "http://api-01.dhealth.cloud:3000",
                "http://dhealth.shizuilab.com:3000",
                "http://dual-03.dhealth.cloud:3000",
                "http://dhealth.adanorthpool.com:3000",
                "http://34.244.52.115:3000"
              ]
            - API_NODE_PORT=3000
            - PEER_NODE_PORT=7900
            - REQUEST_TIMEOUT=5000
            - NUMBER_OF_NODE_REQUEST_CHUNK=10
            - NODE_PEERS_REQUEST_CHUNK_SIZE=50
            - CHAIN_HEIGHT_REQUEST_CHUNK_SIZE=10
            - PREFERRED_NODES=[]
            - MIN_PARTNER_NODE_VERSION=16777216
            - KEEP_STALE_NODES_FOR_HOURS=72
        ports:
            - "4001:4001"
        depends_on:
            - db
volumes:
  mongo:
    name: statistics-service-db

名前解決にhostsを使用している場合は、下記のようにextra_hostsをapp内に追加する。

        extra_hosts:
            - "hogehoge.com:192.168.xxx.xxx"

起動と停止

起動

docker-compose up -d

停止

docker-compose stop

イメージ、ボリューム消したい場合

使わなくなった等でイメージやボリュームを消したい場合も念のため。

docker-compose down

イメージ

$ docker image ls
REPOSITORY                  TAG          IMAGE ID       CREATED              SIZE
symbol-statistics-service   latest       04119a5f479d   About a minute ago   374MB
node                        lts-alpine   e5065cc78074   30 hours ago         112MB
docker rmi [IMAGE ID]

ボリューム

$ docker volume ls
DRIVER    VOLUME NAME
local     0c9ca5753e7eae27c6e842e83d39e593e907689f412bcf4e78f404ebc53f506b
local     statistics-service-db
docker volume rm [VOLUME NAME]