forked from cerc-io/stack-orchestrator
Add stack for azimuth watchers with gateway-server (#379)
* Setup gateway-server with watchers * Add js script to merge toml config files * Remove individual watcher configs * Add all azimuth watchers in stack * Fix toml-js install * Use env variables for ipld-eth-server endpoints * Checkout to version tag in azimuth-watcher-ts repo
This commit is contained in:
parent
b23b5ae3bf
commit
5a94aed7f7
304
app/data/compose/docker-compose-watcher-azimuth.yml
Normal file
304
app/data/compose/docker-compose-watcher-azimuth.yml
Normal file
@ -0,0 +1,304 @@
|
|||||||
|
version: '3.2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# Starts the PostgreSQL database for watchers
|
||||||
|
watcher-db:
|
||||||
|
restart: unless-stopped
|
||||||
|
image: postgres:14-alpine
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=vdbm
|
||||||
|
- POSTGRES_MULTIPLE_DATABASES=azimuth-watcher,azimuth-watcher-job-queue,censures-watcher,censures-watcher-job-queue,claims-watcher,claims-watcher-job-queue,conditional-star-release-watcher,conditional-star-release-watcher-job-queue,delegated-sending-watcher,delegated-sending-watcher-job-queue,ecliptic-watcher,ecliptic-watcher-job-queue,linear-star-release-watcher,linear-star-release-watcher-job-queue,polls-watcher,polls-watcher-job-queue
|
||||||
|
- POSTGRES_EXTENSION=azimuth-watcher-job-queue:pgcrypto,censures-watcher-job-queue:pgcrypto,claims-watcher-job-queue:pgcrypto,conditional-star-release-watcher-job-queue:pgcrypto,delegated-sending-watcher-job-queue:pgcrypto,ecliptic-watcher-job-queue:pgcrypto,linear-star-release-watcher-job-queue:pgcrypto,polls-watcher-job-queue:pgcrypto,
|
||||||
|
- POSTGRES_PASSWORD=password
|
||||||
|
volumes:
|
||||||
|
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
|
||||||
|
- 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
|
||||||
|
|
||||||
|
# Starts the azimuth-watcher server
|
||||||
|
azimuth-watcher-server:
|
||||||
|
image: cerc/watcher-azimuth:local
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
watcher-db:
|
||||||
|
condition: service_healthy
|
||||||
|
env_file:
|
||||||
|
- ../config/watcher-azimuth/watcher-params.env
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
||||||
|
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
||||||
|
working_dir: /app/packages/azimuth-watcher
|
||||||
|
command: "./start-server.sh"
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/azimuth-watcher/environments/watcher-config-template.toml
|
||||||
|
- ../config/watcher-azimuth/merge-toml.js:/app/packages/azimuth-watcher/merge-toml.js
|
||||||
|
- ../config/watcher-azimuth/start-server.sh:/app/packages/azimuth-watcher/start-server.sh
|
||||||
|
ports:
|
||||||
|
- "3001"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-vz", "localhost", "3001"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 5s
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
# Starts the censures-watcher server
|
||||||
|
censures-watcher-server:
|
||||||
|
image: cerc/watcher-azimuth:local
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
watcher-db:
|
||||||
|
condition: service_healthy
|
||||||
|
env_file:
|
||||||
|
- ../config/watcher-azimuth/watcher-params.env
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
||||||
|
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
||||||
|
working_dir: /app/packages/censures-watcher
|
||||||
|
command: "./start-server.sh"
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/censures-watcher/environments/watcher-config-template.toml
|
||||||
|
- ../config/watcher-azimuth/merge-toml.js:/app/packages/censures-watcher/merge-toml.js
|
||||||
|
- ../config/watcher-azimuth/start-server.sh:/app/packages/censures-watcher/start-server.sh
|
||||||
|
ports:
|
||||||
|
- "3002"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-vz", "localhost", "3002"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 5s
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
# Starts the claims-watcher server
|
||||||
|
claims-watcher-server:
|
||||||
|
image: cerc/watcher-azimuth:local
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
watcher-db:
|
||||||
|
condition: service_healthy
|
||||||
|
env_file:
|
||||||
|
- ../config/watcher-azimuth/watcher-params.env
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
||||||
|
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
||||||
|
working_dir: /app/packages/claims-watcher
|
||||||
|
command: "./start-server.sh"
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/claims-watcher/environments/watcher-config-template.toml
|
||||||
|
- ../config/watcher-azimuth/merge-toml.js:/app/packages/claims-watcher/merge-toml.js
|
||||||
|
- ../config/watcher-azimuth/start-server.sh:/app/packages/claims-watcher/start-server.sh
|
||||||
|
ports:
|
||||||
|
- "3003"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-vz", "localhost", "3003"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 5s
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
# Starts the conditional-star-release-watcher server
|
||||||
|
conditional-star-release-watcher-server:
|
||||||
|
image: cerc/watcher-azimuth:local
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
watcher-db:
|
||||||
|
condition: service_healthy
|
||||||
|
env_file:
|
||||||
|
- ../config/watcher-azimuth/watcher-params.env
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
||||||
|
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
||||||
|
working_dir: /app/packages/conditional-star-release-watcher
|
||||||
|
command: "./start-server.sh"
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/conditional-star-release-watcher/environments/watcher-config-template.toml
|
||||||
|
- ../config/watcher-azimuth/merge-toml.js:/app/packages/conditional-star-release-watcher/merge-toml.js
|
||||||
|
- ../config/watcher-azimuth/start-server.sh:/app/packages/conditional-star-release-watcher/start-server.sh
|
||||||
|
ports:
|
||||||
|
- "3004"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-vz", "localhost", "3004"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 5s
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
# Starts the delegated-sending-watcher server
|
||||||
|
delegated-sending-watcher-server:
|
||||||
|
image: cerc/watcher-azimuth:local
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
watcher-db:
|
||||||
|
condition: service_healthy
|
||||||
|
env_file:
|
||||||
|
- ../config/watcher-azimuth/watcher-params.env
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
||||||
|
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
||||||
|
working_dir: /app/packages/delegated-sending-watcher
|
||||||
|
command: "./start-server.sh"
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/delegated-sending-watcher/environments/watcher-config-template.toml
|
||||||
|
- ../config/watcher-azimuth/merge-toml.js:/app/packages/delegated-sending-watcher/merge-toml.js
|
||||||
|
- ../config/watcher-azimuth/start-server.sh:/app/packages/delegated-sending-watcher/start-server.sh
|
||||||
|
ports:
|
||||||
|
- "3005"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-vz", "localhost", "3005"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 5s
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
# Starts the ecliptic-watcher server
|
||||||
|
ecliptic-watcher-server:
|
||||||
|
image: cerc/watcher-azimuth:local
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
watcher-db:
|
||||||
|
condition: service_healthy
|
||||||
|
env_file:
|
||||||
|
- ../config/watcher-azimuth/watcher-params.env
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
||||||
|
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
||||||
|
working_dir: /app/packages/ecliptic-watcher
|
||||||
|
command: "./start-server.sh"
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/ecliptic-watcher/environments/watcher-config-template.toml
|
||||||
|
- ../config/watcher-azimuth/merge-toml.js:/app/packages/ecliptic-watcher/merge-toml.js
|
||||||
|
- ../config/watcher-azimuth/start-server.sh:/app/packages/ecliptic-watcher/start-server.sh
|
||||||
|
ports:
|
||||||
|
- "3006"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-vz", "localhost", "3006"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 5s
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
# Starts the linear-star-release-watcher server
|
||||||
|
linear-star-release-watcher-server:
|
||||||
|
image: cerc/watcher-azimuth:local
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
watcher-db:
|
||||||
|
condition: service_healthy
|
||||||
|
env_file:
|
||||||
|
- ../config/watcher-azimuth/watcher-params.env
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
||||||
|
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
||||||
|
working_dir: /app/packages/linear-star-release-watcher
|
||||||
|
command: "./start-server.sh"
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/linear-star-release-watcher/environments/watcher-config-template.toml
|
||||||
|
- ../config/watcher-azimuth/merge-toml.js:/app/packages/linear-star-release-watcher/merge-toml.js
|
||||||
|
- ../config/watcher-azimuth/start-server.sh:/app/packages/linear-star-release-watcher/start-server.sh
|
||||||
|
ports:
|
||||||
|
- "3007"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-vz", "localhost", "3007"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 5s
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
# Starts the polls-watcher server
|
||||||
|
polls-watcher-server:
|
||||||
|
image: cerc/watcher-azimuth:local
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
watcher-db:
|
||||||
|
condition: service_healthy
|
||||||
|
env_file:
|
||||||
|
- ../config/watcher-azimuth/watcher-params.env
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
||||||
|
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
||||||
|
working_dir: /app/packages/polls-watcher
|
||||||
|
command: "./start-server.sh"
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/polls-watcher/environments/watcher-config-template.toml
|
||||||
|
- ../config/watcher-azimuth/merge-toml.js:/app/packages/polls-watcher/merge-toml.js
|
||||||
|
- ../config/watcher-azimuth/start-server.sh:/app/packages/polls-watcher/start-server.sh
|
||||||
|
ports:
|
||||||
|
- "3008"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-vz", "localhost", "3008"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 5s
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
# Starts the gateway-server for proxying queries
|
||||||
|
gateway-server:
|
||||||
|
image: cerc/watcher-azimuth:local
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
azimuth-watcher-server:
|
||||||
|
condition: service_healthy
|
||||||
|
censures-watcher-server:
|
||||||
|
condition: service_healthy
|
||||||
|
claims-watcher-server:
|
||||||
|
condition: service_healthy
|
||||||
|
conditional-star-release-watcher-server:
|
||||||
|
condition: service_healthy
|
||||||
|
delegated-sending-watcher-server:
|
||||||
|
condition: service_healthy
|
||||||
|
ecliptic-watcher-server:
|
||||||
|
condition: service_healthy
|
||||||
|
linear-star-release-watcher-server:
|
||||||
|
condition: service_healthy
|
||||||
|
polls-watcher-server:
|
||||||
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
working_dir: /app/packages/gateway-server
|
||||||
|
command: "yarn server"
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-azimuth/gateway-watchers.json:/app/packages/gateway-server/dist/watchers.json
|
||||||
|
ports:
|
||||||
|
- "0.0.0.0:4000:4000"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-vz", "localhost", "4000"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 5s
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
watcher_db_data:
|
34
app/data/config/watcher-azimuth/gateway-watchers.json
Normal file
34
app/data/config/watcher-azimuth/gateway-watchers.json
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"endpoint": "http://azimuth-watcher-server:3001/graphql",
|
||||||
|
"prefix": "azimuth"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoint": "http://censures-watcher-server:3002/graphql",
|
||||||
|
"prefix": "censures"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoint": "http://claims-watcher-server:3003/graphql",
|
||||||
|
"prefix": "claims"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoint": "http://conditional-star-release-watcher-server:3004/graphql",
|
||||||
|
"prefix": "conditionalStarRelease"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoint": "http://delegated-sending-watcher-server:3005/graphql",
|
||||||
|
"prefix": "delegatedSending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoint": "http://ecliptic-watcher-server:3006/graphql",
|
||||||
|
"prefix": "ecliptic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoint": "http://linear-star-release-watcher-server:3007/graphql",
|
||||||
|
"prefix": "linearStarRelease"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoint": "http://polls-watcher-server:3008/graphql",
|
||||||
|
"prefix": "polls"
|
||||||
|
}
|
||||||
|
]
|
31
app/data/config/watcher-azimuth/merge-toml.js
Normal file
31
app/data/config/watcher-azimuth/merge-toml.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
const tomlJS = require('toml-js');
|
||||||
|
const toml = require('toml');
|
||||||
|
const { merge } = require('lodash')
|
||||||
|
|
||||||
|
const main = () => {
|
||||||
|
const overrideConfigString = fs.readFileSync('environments/watcher-config.toml', 'utf-8');
|
||||||
|
const configString = fs.readFileSync('environments/local.toml', 'utf-8');
|
||||||
|
const overrideConfig = toml.parse(overrideConfigString)
|
||||||
|
const config = toml.parse(configString)
|
||||||
|
|
||||||
|
// Merge configs
|
||||||
|
const updatedConfig = merge(config, overrideConfig);
|
||||||
|
|
||||||
|
// Form dbConnectionString for jobQueue DB
|
||||||
|
const parts = config.jobQueue.dbConnectionString.split("://");
|
||||||
|
const credsAndDB = parts[1].split("@");
|
||||||
|
const creds = credsAndDB[0].split(":");
|
||||||
|
creds[0] = overrideConfig.database.username;
|
||||||
|
creds[1] = overrideConfig.database.password;
|
||||||
|
credsAndDB[0] = creds.join(":");
|
||||||
|
const dbName = credsAndDB[1].split("/")[1]
|
||||||
|
credsAndDB[1] = [overrideConfig.database.host, dbName].join("/");
|
||||||
|
parts[1] = credsAndDB.join("@");
|
||||||
|
|
||||||
|
updatedConfig.jobQueue.dbConnectionString = parts.join("://");
|
||||||
|
|
||||||
|
fs.writeFileSync('environments/local.toml', tomlJS.dump(updatedConfig), 'utf-8');
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
27
app/data/config/watcher-azimuth/start-server.sh
Executable file
27
app/data/config/watcher-azimuth/start-server.sh
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
|
CERC_IPLD_ETH_RPC="${CERC_IPLD_ETH_RPC:-${DEFAULT_CERC_IPLD_ETH_RPC}}"
|
||||||
|
CERC_IPLD_ETH_GQL="${CERC_IPLD_ETH_GQL:-${DEFAULT_CERC_IPLD_ETH_GQL}}"
|
||||||
|
|
||||||
|
echo "Using IPLD ETH RPC endpoint ${CERC_IPLD_ETH_RPC}"
|
||||||
|
echo "Using IPLD GQL endpoint ${CERC_IPLD_ETH_GQL}"
|
||||||
|
|
||||||
|
# Replace env variables in template TOML file
|
||||||
|
# Read in the config template TOML file and modify it
|
||||||
|
WATCHER_CONFIG_TEMPLATE=$(cat environments/watcher-config-template.toml)
|
||||||
|
WATCHER_CONFIG=$(echo "$WATCHER_CONFIG_TEMPLATE" | \
|
||||||
|
sed -E "s|REPLACE_WITH_CERC_IPLD_ETH_RPC|${CERC_IPLD_ETH_RPC}|g; \
|
||||||
|
s|REPLACE_WITH_CERC_IPLD_ETH_GQL|${CERC_IPLD_ETH_GQL}| ")
|
||||||
|
|
||||||
|
# Write the modified content to a new file
|
||||||
|
echo "$WATCHER_CONFIG" > environments/watcher-config.toml
|
||||||
|
|
||||||
|
# Merge SO watcher config with existing config file
|
||||||
|
node merge-toml.js
|
||||||
|
|
||||||
|
echo 'yarn server'
|
||||||
|
yarn server
|
14
app/data/config/watcher-azimuth/watcher-config-template.toml
Normal file
14
app/data/config/watcher-azimuth/watcher-config-template.toml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[server]
|
||||||
|
host = "0.0.0.0"
|
||||||
|
maxSimultaneousRequests = -1
|
||||||
|
|
||||||
|
[database]
|
||||||
|
host = "watcher-db"
|
||||||
|
port = 5432
|
||||||
|
username = "vdbm"
|
||||||
|
password = "password"
|
||||||
|
|
||||||
|
[upstream]
|
||||||
|
[upstream.ethServer]
|
||||||
|
gqlApiEndpoint = "REPLACE_WITH_CERC_IPLD_ETH_GQL"
|
||||||
|
rpcProviderEndpoint = "REPLACE_WITH_CERC_IPLD_ETH_RPC"
|
5
app/data/config/watcher-azimuth/watcher-params.env
Normal file
5
app/data/config/watcher-azimuth/watcher-params.env
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Defaults
|
||||||
|
|
||||||
|
# ipld-eth-server endpoints
|
||||||
|
DEFAULT_CERC_IPLD_ETH_RPC=
|
||||||
|
DEFAULT_CERC_IPLD_ETH_GQL=
|
13
app/data/container-build/cerc-watcher-azimuth/Dockerfile
Normal file
13
app/data/container-build/cerc-watcher-azimuth/Dockerfile
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
FROM node:18.16.0-alpine3.16
|
||||||
|
|
||||||
|
RUN apk --update --no-cache add git python3 alpine-sdk
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN echo "Building azimuth-watcher-ts" && \
|
||||||
|
yarn && yarn build
|
||||||
|
|
||||||
|
RUN echo "Install toml-js to update watcher config files" && \
|
||||||
|
yarn add --dev --ignore-workspace-root-check toml-js
|
9
app/data/container-build/cerc-watcher-azimuth/build.sh
Executable file
9
app/data/container-build/cerc-watcher-azimuth/build.sh
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build cerc/watcher-azimuth
|
||||||
|
|
||||||
|
source ${CERC_CONTAINER_BASE_DIR}/build-base.sh
|
||||||
|
|
||||||
|
# See: https://stackoverflow.com/a/246128/1701505
|
||||||
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||||
|
|
||||||
|
docker build -t cerc/watcher-azimuth:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} ${CERC_REPO_BASE_DIR}/azimuth-watcher-ts
|
@ -37,3 +37,4 @@ cerc/optimism-op-batcher
|
|||||||
cerc/optimism-op-node
|
cerc/optimism-op-node
|
||||||
cerc/optimism-op-proposer
|
cerc/optimism-op-proposer
|
||||||
cerc/pocket
|
cerc/pocket
|
||||||
|
cerc/watcher-azimuth
|
||||||
|
@ -25,3 +25,4 @@ kubo
|
|||||||
foundry
|
foundry
|
||||||
fixturenet-optimism
|
fixturenet-optimism
|
||||||
fixturenet-pocket
|
fixturenet-pocket
|
||||||
|
watcher-azimuth
|
||||||
|
@ -29,3 +29,4 @@ ethereum-optimism/op-geth
|
|||||||
ethereum-optimism/optimism
|
ethereum-optimism/optimism
|
||||||
pokt-network/pocket-core
|
pokt-network/pocket-core
|
||||||
pokt-network/pocket-core-deployments
|
pokt-network/pocket-core-deployments
|
||||||
|
cerc-io/azimuth-watcher-ts
|
||||||
|
72
app/data/stacks/azimuth/README.md
Normal file
72
app/data/stacks/azimuth/README.md
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
# Azimuth Watcher
|
||||||
|
|
||||||
|
Instructions to setup and deploy Azimuth Watcher stack
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Prerequisite: ipld-eth-server RPC and GQL endpoints
|
||||||
|
|
||||||
|
Clone required repositories:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack azimuth setup-repositories
|
||||||
|
```
|
||||||
|
|
||||||
|
NOTE: If the repository already exists and checked out to a different version, `setup-repositories` command will throw an error.
|
||||||
|
For getting around this, the `azimuth-watcher-ts` repository can be removed and then run the command.
|
||||||
|
|
||||||
|
Checkout to the required versions and branches in repos
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# azimuth-watcher-ts
|
||||||
|
cd ~/cerc/azimuth-watcher-ts
|
||||||
|
git checkout v0.1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
Build the container images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack azimuth build-containers
|
||||||
|
```
|
||||||
|
|
||||||
|
This should create the required docker images in the local image registry.
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
|
||||||
|
* Create and update an env file to be used in the next step:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# External ipld-eth-server endpoints
|
||||||
|
CERC_IPLD_ETH_RPC=
|
||||||
|
CERC_IPLD_ETH_GQL=
|
||||||
|
```
|
||||||
|
|
||||||
|
* NOTE: If ipld-eth-server is running on the host machine, use `host.docker.internal` as the hostname to access host ports
|
||||||
|
|
||||||
|
### Deploy the stack
|
||||||
|
|
||||||
|
* Deploy the containers:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack azimuth deploy-system --env-file <PATH_TO_ENV_FILE> up
|
||||||
|
```
|
||||||
|
|
||||||
|
* List and check the health status of all the containers using `docker ps` and wait for them to be `healthy`
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
|
||||||
|
Stop all the services running in background run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack azimuth deploy-system down
|
||||||
|
```
|
||||||
|
|
||||||
|
Clear volumes created by this stack:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# List all relevant volumes
|
||||||
|
docker volume ls -q --filter "name=.*watcher_db_data"
|
||||||
|
|
||||||
|
# Remove all the listed volumes
|
||||||
|
docker volume rm $(docker volume ls -q --filter "name=.*watcher_db_data")
|
||||||
|
```
|
8
app/data/stacks/azimuth/stack.yml
Normal file
8
app/data/stacks/azimuth/stack.yml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
version: "1.0"
|
||||||
|
name: azimuth
|
||||||
|
repos:
|
||||||
|
- cerc-io/azimuth-watcher-ts
|
||||||
|
containers:
|
||||||
|
- cerc/watcher-azimuth
|
||||||
|
pods:
|
||||||
|
- watcher-azimuth
|
Loading…
Reference in New Issue
Block a user