synapsecns/sanguine

View on GitHub
docker/devnet/docker-compose.yml

Summary

Maintainability
Test Coverage
version: '3.4'

# This compose file is expected to be used from make and not independently.

volumes:
  chain_a_data:
  chain_b_data:
  chain_c_data:
  guard_data:
  notary43_data:
  scribe_data:
  prometheus-data:
  badger-data:
  notary44_data:
  executor_data:


services:
  guard:
    restart: unless-stopped
    entrypoint: agents
    depends_on:
      - omnirpc
      - scribe
    build:
      context: ../../
      dockerfile: docker/devnet/agents.Dockerfile
    volumes:
      - '${PWD}/config/guard-config.yml:/config/guard-config.yml'
      - '${PWD}/config/guard-bonded-signer.txt:/config/guard-bonded-signer.txt'
      - guard_data:/data
    command:
      - 'guard-run'
      - '--config'
      - '/config/guard-config.yml'
    environment:
      METRICS_HANDLER: jaeger
      JAEGER_ENDPOINT: 'http://tracing:14268/api/traces'
      GOLOG_LOG_LEVEL: debug

  notary-43:
    entrypoint: agents
    restart: unless-stopped
    depends_on:
      - omnirpc
    build:
      context: ../../
      dockerfile: docker/devnet/agents.Dockerfile
    volumes:
      - '${PWD}/config/notary43-config.yml:/config/notary-config.yml'
      - '${PWD}/config/notary43-bonded-signer.txt:/config/notary-bonded-signer.txt'
      - notary43_data:/config/synapse.db
    command:
      - 'notary-run'
      - '--config'
      - '/config/notary-config.yml'
      - '--debug'
    environment:
      METRICS_HANDLER: jaeger
      JAEGER_ENDPOINT: 'http://tracing:14268/api/traces'
      GOLOG_LOG_LEVEL: debug


  notary-44:
    entrypoint: agents
    restart: unless-stopped
    depends_on:
      - omnirpc
    build:
      context: ../../
      dockerfile: docker/devnet/agents.Dockerfile
    volumes:
      - '${PWD}/config/notary44-config.yml:/config/notary-config.yml'
      - '${PWD}/config/notary44-bonded-signer.txt:/config/notary-bonded-signer.txt'
      - notary44_data:/config/synapse.db
    command:
      - 'notary-run'
      - '--config'
      - '/config/notary-config.yml'
      - '--debug'
    environment:
      METRICS_HANDLER: jaeger
      JAEGER_ENDPOINT: 'http://tracing:14268/api/traces'
      GOLOG_LOG_LEVEL: debug

  executor:
    entrypoint: agents
    restart: unless-stopped
    depends_on:
      - omnirpc
    build:
      context: ../../
      dockerfile: docker/devnet/agents.Dockerfile
    volumes:
      - '${PWD}/config/executor-config.yml:/config/executor-config.yml'
      - '${PWD}/config/executor-signer.txt:/config/executor-signer.txt'
      - executor_data:/config/synapse.db
    command:
      - 'executor-run'
      - '--config'
      - '/config/executor-config.yml'
      - '--debug'
    environment:
      METRICS_HANDLER: jaeger
      JAEGER_ENDPOINT: 'http://tracing:14268/api/traces'
      GOLOG_LOG_LEVEL: debug


  scribe-indexer:
    depends_on:
    - omnirpc
    build:
      context: ../../
      dockerfile: docker/devnet/scribe.Dockerfile
    entrypoint: scribe
    restart: unless-stopped
    command: >
        scribe
        --config=/config/scribe.yaml
        --db=sqlite
        --path=/data
    volumes:
      - '${PWD}/config/scribe-indexer-config.yaml:/config/scribe.yaml'
      - scribe_data:/data
    environment:
      METRICS_HANDLER: jaeger
      JAEGER_ENDPOINT: 'http://tracing:14268/api/traces'
      GOLOG_LOG_LEVEL: debug

  scribe:
    restart: unless-stopped
    depends_on:
      - scribe-indexer
    build:
      context: ../../
      dockerfile: docker/devnet/scribe.Dockerfile
    entrypoint: scribe
    command: >
      server
      --port=9002
      --db=sqlite
      --path=/data
      --omnirpc=http://omnirpc:9001
    volumes:
      - scribe_data:/data
    environment:
      METRICS_HANDLER: jaeger
      JAEGER_ENDPOINT: 'http://tracing:14268/api/traces'
      GOLOG_LOG_LEVEL: debug
    ports:
      - '9002:9002'


  omnirpc:
    restart: unless-stopped
    depends_on:
      - chain_a
      - chain_b
      - chain_c
      - tracing
    build:
      context: ../../
      dockerfile: docker/devnet/omnirpc.Dockerfile
    ports:
      - '9001:9001'
    command: >
      omnirpc
      server
      --config=/config/omnirpc.yaml
    volumes:
      - '${PWD}/config/omnirpc.yaml:/config/omnirpc.yaml'
    environment:
      METRICS_HANDLER: jaeger
      JAEGER_ENDPOINT: 'http://tracing:14268/api/traces'
# TODO, consider re-enabling.
#    healthcheck:
#      test: ['CMD', 'curl', '-f', 'http://localhost:8545/health']
#      interval: 1s
#      timeout: 20s
#      retries: 10
#      start_period: 5s

  chain_a:
    restart: unless-stopped
    image: 'ghcr.io/foundry-rs/foundry:latest'
    entrypoint: anvil
    command: >
      --host=0.0.0.0
      --chain-id=42
      --allow-origin='*'
      --steps-tracing
      --mnemonic='tag volcano eight thank tide danger coast health above argue embrace heavy'
      --base-fee=1
      --gas-limit=100000000
      --state=/data/
    ports:
      - '8042:8545'
    volumes:
      - chain_a_data:/data

  chain_b:
    restart: unless-stopped
    image: 'ghcr.io/foundry-rs/foundry:latest'
    entrypoint: anvil
    command: >
      --host=0.0.0.0
      --chain-id=43
      --allow-origin='*'
      --steps-tracing
      --mnemonic='tag volcano eight thank tide danger coast health above argue embrace heavy'
      --base-fee=1
      --gas-limit=100000000
      --state=/data/
    ports:
      - '8043:8545'
    volumes:
      - chain_b_data:/data

  chain_c:
    restart: unless-stopped
    image: 'ghcr.io/foundry-rs/foundry:latest'
    entrypoint: anvil
    command: >
      --host=0.0.0.0
      --chain-id=44
      --allow-origin='*'
      --steps-tracing
      --mnemonic='tag volcano eight thank tide danger coast health above argue embrace heavy'
      --base-fee=1
      --gas-limit=100000000
      --state=/data/
    ports:
      - '8044:8545'
    volumes:
      - chain_b_data:/data

  tracing:
    restart: unless-stopped
    image: jaegertracing/all-in-one:latest
    ports:
      - 6831:6831/udp
      - 6832:6832/udp
      - 5778:5778
      - 16686:16686
      - 4317:4317
      - 4318:4318
      - 14250:14250
      - 14268:14268
      - 14269:14269
      - 9411:9411
    environment:
      SPAN_STORAGE_TYPE: 'badger'
      BADGER_EPHEMERAL: 'false'
      BADGER_DIRECTORY_VALUE: '/badger/data'
      BADGER_DIRECTORY_KEY: '/badger/key'
    volumes:
      - badger-data:/badger

  prometheus:
    restart: unless-stopped
    image: prom/prometheus:v2.46.0
    ports:
      - 9000:9090
    volumes:
      - '${PWD}/config/prometheus:/etc/prometheus'
      - prometheus-data:/prometheus
    command: --web.enable-lifecycle  --config.file=/etc/prometheus/prometheus.yml