ipld-eth-server/dockerfiles
2019-02-11 11:27:33 +01:00
..
rinkeby dockerfiles/rinkeby: added named volume for pg container 2018-06-25 23:34:49 +03:00
README.md Nuke OpenRC from docker image, update readme's 2019-02-11 11:27:33 +01:00
startup_script.sh Nuke OpenRC from docker image, update readme's 2019-02-11 11:27:33 +01:00

S Dockerfile will build an alpine image containing:

  • vDB as a binary with runtime deps statically linked: /app/vulcanizedb
  • The migration tool goose: /app/goose
  • Two services for running lightSync and continuousLogSync, started with the default configuration environments/staging.toml.

By default, vDB is configured towards the Kovan deploy. The configuration values can be overridden using environment variables, using the same hierarchical naming pattern but in CAPS and using underscores. For example, the contract address for the Pit can be set with the variable CONTRACT_ADDRESS_PIT="0x123...".

To use the container:

  1. Setup a postgres database with superuser vulcanize
  2. Set the env variables DATABASE_NAME, DATABASE_HOSTNAME, DATABASE_PORT, DATABASE_USER & DATABASE_PASSWORD
  3. Run the DB migrations:
  • ./goose postgres "postgresql://$(DATABASE_USER):$(DATABASE_PASSWORD)@$(DATABASE_HOSTNAME):$(DATABASE_PORT)/$(DATABASE_NAME)?sslmode=disable" e
  1. Set CLIENT_IPCPATH to a node endpoint
  2. Set the contract variables:
  • CONTRACT_ADDRESS_[CONTRACT NAME]=0x123...
  • CONTRACT_ABI_[CONTRACT NAME]="ABI STRING"
  • CONTRACT_DEPLOYMENT-BLOCK_[CONTRACT NAME]=0 (doesn't really matter on a short chain, just avoids long unnecessary searching)
  1. Start the lightSync and continuousLogSync services:
  • ./vulcanizedb lightSync --config environments/staging.toml
  • ./vulcanizedb continuousLogSync --config environments/staging.toml

Automated

The steps above have been rolled into a script: /app/startup_script.sh, which just assumes the DB env variables have been set, and defaults the rest to Kovan according to environments/staging.toml. This can be called with something like:

docker run -d -e DATABASE_NAME=vulcanize_public -e DATABASE_HOSTNAME=localhost -e DATABASE_PORT=5432 -e DATABASE_USER=vulcanize -e DATABASE_PASSWORD=vulcanize m0ar/images:vDB

Logging

When running, vDB services log to /app/vulcanizedb.log.