forked from cerc-io/stack-orchestrator
Add a stack for mobymask-v2-watcher to run peer tests (#222)
* Add mobymask-v2-watcher stack with peer tests * Rename stack and container * Avoid building react-peer container * Improve step for getting container ID
This commit is contained in:
parent
a354158680
commit
7831078872
47
app/data/compose/docker-compose-watcher-mobymask-v2.yml
Normal file
47
app/data/compose/docker-compose-watcher-mobymask-v2.yml
Normal file
@ -0,0 +1,47 @@
|
||||
version: '3.2'
|
||||
|
||||
services:
|
||||
mobymask-watcher-db:
|
||||
restart: unless-stopped
|
||||
image: postgres:14-alpine
|
||||
environment:
|
||||
- POSTGRES_USER=vdbm
|
||||
- POSTGRES_MULTIPLE_DATABASES=mobymask-watcher,mobymask-watcher-job-queue
|
||||
- POSTGRES_EXTENSION=mobymask-watcher-job-queue:pgcrypto
|
||||
- POSTGRES_PASSWORD=password
|
||||
volumes:
|
||||
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
|
||||
- mobymask_watcher_db_data:/var/lib/postgresql/data
|
||||
ports:
|
||||
- "0.0.0.0:15432:5432"
|
||||
healthcheck:
|
||||
test: ["CMD", "nc", "-v", "localhost", "5432"]
|
||||
interval: 20s
|
||||
timeout: 5s
|
||||
retries: 15
|
||||
start_period: 10s
|
||||
|
||||
mobymask-watcher-server:
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
mobymask-watcher-db:
|
||||
condition: service_healthy
|
||||
image: cerc/watcher-mobymask-v2:local
|
||||
command: ["sh", "-c", "yarn server"]
|
||||
volumes:
|
||||
- ../config/watcher-mobymask-v2/watcher.toml:/app/packages/mobymask-v2-watcher/environments/local.toml
|
||||
- ../config/watcher-mobymask-v2/.env:/app/packages/peer/.env
|
||||
- ../config/watcher-mobymask-v2/relay-id.json:/app/packages/mobymask-v2-watcher/relay-id.json
|
||||
ports:
|
||||
- "0.0.0.0:3001:3001"
|
||||
- "0.0.0.0:9001:9001"
|
||||
- "0.0.0.0:9090:9090"
|
||||
healthcheck:
|
||||
test: ["CMD", "nc", "-v", "localhost", "9090"]
|
||||
interval: 20s
|
||||
timeout: 5s
|
||||
retries: 15
|
||||
start_period: 5s
|
||||
|
||||
volumes:
|
||||
mobymask_watcher_db_data:
|
1
app/data/config/watcher-mobymask-v2/.env
Normal file
1
app/data/config/watcher-mobymask-v2/.env
Normal file
@ -0,0 +1 @@
|
||||
RELAY="/ip4/127.0.0.1/tcp/9090/http/p2p-webrtc-direct/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"
|
8
app/data/config/watcher-mobymask-v2/config.json
Normal file
8
app/data/config/watcher-mobymask-v2/config.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"relayNodes": [
|
||||
"/ip4/127.0.0.1/tcp/9090/http/p2p-webrtc-direct/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"
|
||||
],
|
||||
"peer": {
|
||||
"enableDebugInfo": true
|
||||
}
|
||||
}
|
5
app/data/config/watcher-mobymask-v2/relay-id.json
Normal file
5
app/data/config/watcher-mobymask-v2/relay-id.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"id": "12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t",
|
||||
"privKey": "CAESQGsqG5o4VlWJZM9XlA3MjabyZOXWQ2MLZU5AhBQsjXGt9iSlGtTuNOrHX5xSRgLBxLuMoqWsjGxE/dDB9c46RI8=",
|
||||
"pubKey": "CAESIPYkpRrU7jTqx1+cUkYCwcS7jKKlrIxsRP3QwfXOOkSP"
|
||||
}
|
70
app/data/config/watcher-mobymask-v2/watcher.toml
Normal file
70
app/data/config/watcher-mobymask-v2/watcher.toml
Normal file
@ -0,0 +1,70 @@
|
||||
[server]
|
||||
host = "0.0.0.0"
|
||||
port = 3001
|
||||
kind = "lazy"
|
||||
|
||||
# Checkpointing state.
|
||||
checkpointing = true
|
||||
|
||||
# Checkpoint interval in number of blocks.
|
||||
checkpointInterval = 2000
|
||||
|
||||
# Enable state creation
|
||||
enableState = true
|
||||
|
||||
# Boolean to filter logs by contract.
|
||||
filterLogs = true
|
||||
|
||||
# Max block range for which to return events in eventsInRange GQL query.
|
||||
# Use -1 for skipping check on block range.
|
||||
maxEventsBlockRange = -1
|
||||
|
||||
[server.p2p]
|
||||
enableRelay = true
|
||||
enablePeer = false
|
||||
|
||||
[server.p2p.relay]
|
||||
host = "0.0.0.0"
|
||||
port = 9090
|
||||
relayPeers = []
|
||||
peerIdFile = './relay-id.json'
|
||||
enableDebugInfo = true
|
||||
|
||||
[server.p2p.peer]
|
||||
relayMultiaddr = '/ip4/mobymask-watcher-server/tcp/9090/http/p2p-webrtc-direct/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t'
|
||||
pubSubTopic = 'mobymask'
|
||||
peerIdFile = './peer-id.json'
|
||||
enableDebugInfo = true
|
||||
|
||||
[metrics]
|
||||
host = "0.0.0.0"
|
||||
port = 9000
|
||||
[metrics.gql]
|
||||
port = 9001
|
||||
|
||||
[database]
|
||||
type = "postgres"
|
||||
host = "mobymask-watcher-db"
|
||||
port = 5432
|
||||
database = "mobymask-watcher"
|
||||
username = "vdbm"
|
||||
password = "password"
|
||||
synchronize = true
|
||||
logging = false
|
||||
|
||||
[upstream]
|
||||
[upstream.ethServer]
|
||||
gqlApiEndpoint = "http://ipld-eth-server:8083/graphql"
|
||||
rpcProviderEndpoint = "http://ipld-eth-server:8082"
|
||||
blockDelayInMilliSecs = 60000
|
||||
|
||||
[upstream.cache]
|
||||
name = "requests"
|
||||
enabled = false
|
||||
deleteOnStart = false
|
||||
|
||||
[jobQueue]
|
||||
dbConnectionString = "postgres://vdbm:password@mobymask-watcher-db/mobymask-watcher-job-queue"
|
||||
maxCompletionLagInSecs = 300
|
||||
jobDelayInMilliSecs = 100
|
||||
eventsInBatch = 50
|
12
app/data/container-build/cerc-mobymask-ui/Dockerfile
Normal file
12
app/data/container-build/cerc-mobymask-ui/Dockerfile
Normal file
@ -0,0 +1,12 @@
|
||||
FROM node:18.15.0-alpine3.16
|
||||
|
||||
RUN apk --update --no-cache add make git
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN echo "Building mobymask-ui" && \
|
||||
npm install
|
||||
|
||||
WORKDIR /app
|
7
app/data/container-build/cerc-mobymask-ui/build.sh
Executable file
7
app/data/container-build/cerc-mobymask-ui/build.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build cerc/mobymask-ui
|
||||
|
||||
# See: https://stackoverflow.com/a/246128/1701505
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
|
||||
docker build -t cerc/mobymask-ui:local -f ${SCRIPT_DIR}/Dockerfile ${CERC_REPO_BASE_DIR}/mobymask-ui
|
12
app/data/container-build/cerc-react-peer/Dockerfile
Normal file
12
app/data/container-build/cerc-react-peer/Dockerfile
Normal file
@ -0,0 +1,12 @@
|
||||
FROM node:18.15.0-alpine3.16
|
||||
|
||||
RUN apk --update --no-cache add make git
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN echo "Building react-peer" && \
|
||||
yarn && yarn workspace @cerc-io/react-peer build
|
||||
|
||||
WORKDIR /app
|
7
app/data/container-build/cerc-react-peer/build.sh
Executable file
7
app/data/container-build/cerc-react-peer/build.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build cerc/react-peer
|
||||
|
||||
# See: https://stackoverflow.com/a/246128/1701505
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
|
||||
docker build -t cerc/react-peer:local -f ${SCRIPT_DIR}/Dockerfile ${CERC_REPO_BASE_DIR}/react-peer
|
20
app/data/container-build/cerc-watcher-mobymask-v2/Dockerfile
Normal file
20
app/data/container-build/cerc-watcher-mobymask-v2/Dockerfile
Normal file
@ -0,0 +1,20 @@
|
||||
FROM ubuntu:22.04
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y curl gnupg build-essential \
|
||||
&& curl --silent --location https://deb.nodesource.com/setup_18.x | bash - \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y nodejs git \
|
||||
&& node -v
|
||||
|
||||
RUN corepack enable \
|
||||
&& yarn --version
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN echo "Building watcher-ts" && \
|
||||
yarn && yarn build
|
||||
|
||||
WORKDIR /app/packages/mobymask-v2-watcher
|
7
app/data/container-build/cerc-watcher-mobymask-v2/build.sh
Executable file
7
app/data/container-build/cerc-watcher-mobymask-v2/build.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build cerc/watcher-mobymask-v2
|
||||
|
||||
# See: https://stackoverflow.com/a/246128/1701505
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
|
||||
docker build -t cerc/watcher-mobymask-v2:local -f ${SCRIPT_DIR}/Dockerfile ${CERC_REPO_BASE_DIR}/watcher-ts
|
@ -18,6 +18,9 @@ cerc/watcher-erc20
|
||||
cerc/watcher-erc721
|
||||
cerc/watcher-uniswap-v3
|
||||
cerc/uniswap-v3-info
|
||||
cerc/watcher-mobymask-v2
|
||||
cerc/react-peer
|
||||
cerc/mobymask-ui
|
||||
cerc/test-container
|
||||
cerc/eth-probe
|
||||
cerc/builder-js
|
||||
|
@ -14,6 +14,7 @@ watcher-mobymask
|
||||
watcher-erc20
|
||||
watcher-erc721
|
||||
watcher-uniswap-v3
|
||||
watcher-mobymask-v2
|
||||
test
|
||||
eth-probe
|
||||
keycloak
|
||||
|
@ -11,6 +11,8 @@ cerc-io/laconic-sdk
|
||||
cerc-io/laconic-registry-cli
|
||||
cerc-io/mobymask-watcher
|
||||
cerc-io/watcher-ts
|
||||
cerc-io/react-peer
|
||||
cerc-io/mobymask-ui
|
||||
vulcanize/uniswap-watcher-ts
|
||||
vulcanize/uniswap-v3-info
|
||||
vulcanize/assemblyscript
|
||||
|
61
app/data/stacks/mobymask-v2/README.md
Normal file
61
app/data/stacks/mobymask-v2/README.md
Normal file
@ -0,0 +1,61 @@
|
||||
# MobyMask v2 watcher
|
||||
|
||||
Instructions to deploy MobyMask v2 watcher stack using [laconic-stack-orchestrator](/README.md#install)
|
||||
|
||||
## Setup
|
||||
|
||||
Clone required repositories:
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 setup-repositories
|
||||
```
|
||||
|
||||
Build the container images:
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 build-containers
|
||||
```
|
||||
|
||||
This should create the required docker images in the local image registry.
|
||||
|
||||
Deploy the stack:
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 deploy-system up
|
||||
```
|
||||
|
||||
## Tests
|
||||
|
||||
Find the watcher container's id:
|
||||
|
||||
```bash
|
||||
docker ps | grep "cerc/watcher-mobymask-v2:local"
|
||||
```
|
||||
|
||||
Example output
|
||||
|
||||
```
|
||||
8b38e9a64d7e cerc/watcher-mobymask-v2:local "sh -c 'yarn server'" 35 seconds ago Up 14 seconds (health: starting) 0.0.0.0:3001->3001/tcp, 0.0.0.0:9001->9001/tcp, 0.0.0.0:9090->9090/tcp laconic-aeb84676de2b0a7671ae90d537fc7d26-mobymask-watcher-server-1
|
||||
```
|
||||
|
||||
In above output the container ID is `8b38e9a64d7e`
|
||||
|
||||
Export it for later use:
|
||||
|
||||
```bash
|
||||
export CONTAINER_ID=<CONTAINER_ID>
|
||||
```
|
||||
|
||||
Run the peer tests:
|
||||
|
||||
```bash
|
||||
docker exec -w /app/packages/peer $CONTAINER_ID yarn test
|
||||
```
|
||||
|
||||
## Clean up
|
||||
|
||||
To stop all the services running in background run:
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 deploy-system down
|
||||
```
|
11
app/data/stacks/mobymask-v2/stack.yml
Normal file
11
app/data/stacks/mobymask-v2/stack.yml
Normal file
@ -0,0 +1,11 @@
|
||||
version: "1.0"
|
||||
name: mobymask-v2
|
||||
repos:
|
||||
- cerc-io/watcher-ts
|
||||
- cerc-io/react-peer
|
||||
- cerc-io/mobymask-ui
|
||||
containers:
|
||||
- cerc/watcher-mobymask-v2
|
||||
- cerc/mobymask-ui
|
||||
pods:
|
||||
- watcher-mobymask-v2
|
Loading…
Reference in New Issue
Block a user