Skip to content

SouthbankSoftware/provendb-docker-compose

Repository files navigation

Dockerized Deployment of ProvenDB

Powered by ProvenDB

Please Note: The Docker-Compose deployment of ProvenDB in this repository is to demonstrate the capabilities of both the cloud and on-premise implementations of ProvenDB, if you are looking for a complete production-ready deployment of ProvenDB, please contact us at support@southbanksoftware.com.


A Docker-Compose configuration for deploying ProvenDB on your chosen system, perfect for testing out whether the application is a good fit for your blockchain project, or just to send some local data to the blockchain without using our cloud provided services.

Table of Contents

Prerequisities

Check Compatibility section for versions that are known to work.

  • git
  • docker
  • docker-compose

Quick Start Guide

Either watch the video below, or follow the written steps to get started with ProvenDB as a standalone container.

1. Clone the Repository

git clone https://github.com/SouthbankSoftware/provendb-docker-compose.git

2. Navigate to the root directory of the repository.

cd provendb-docker-compose

3. Ensure Docker images are up to date (run this regularly to get the latest features and bug fixes).

docker-compose pull

4. Run the Docker containers.

On Unix operating systems:

docker-compose pull && docker-compose -f docker-compose.yml -f docker-compose.standalone.yml up --build -d

On Windows operating systems:

sed -i 's/\r$//' scripts/*/*.sh && docker-compose pull && docker-compose -f docker-compose.yml -f docker-compose.standalone.yml up --build -d

5. Check container status

docker ps

All the containers should be healthy

6. Connect to ProvenDB.

mongo mongodb://pdbuser:click123@localhost:27018/provendb

7. Next Steps

  • Customize your configuration by modifying the env/creds-standalone/provendb.env file.
  • Complete the database tutorial here.

Configuration

  • This ProvenDB service runs with ssl disabled by default. If you wish to use ssl, you will need to place your certificate (in .p12 format) in ssl_cert/certificate.p12 and set ENV_PROVENDB_SECURITY_SSL_ENABLE=true in the common.env file.

  • Because this is a demo version of the product, anchoring proofs to Ethereum is accomplished on the Rinkeby Testnet by default. However, you can change this configuration if you wish to connect to a different Ethereum compatible endpoint.

    For example, if you would like to use a private blockchain such as Quorum, you will need to make the following changes.

      1. Set `ANCHOR_ETH_ENDPOINT` in `env/creds-standalone/anchor.env` to point to the Quorum node.
    
      2. Set `ANCHOR_ETH_PRIVATE_KEY` to the value of the private key of the account address which will be used for signing transactions.
    

    A free endpoint for anchoring transactions on the Ethereum mainnet or testnet can be obtained from Infura.io.

Troubleshooting

No Space Left on Device in container logs.

If you get an error like no space left on device in any of the container logs, you may try and run this

docker rm $(docker ps -q -f 'status=exited')
docker rmi $(docker images -q -f "dangling=true")
docker volume rm $(docker volume ls -qf dangling=true)

Drive sharing failed for an unknown reason error on Windows

On Windows if you encounter the following error:

ERROR: for provendb-tree-cache  Cannot create container for service treecache: b'Drive sharing failed for an unknown reason'

Please refer to this docker issue.

Blockcypher API Limit Reached.

The Blockcypher token included in this repo is 62067971acd84dbf83d97739541ca77b. This is a free token with a api limit of 200 calls per day and is shared among all running public docker instances of ProvenDB. If you need more, you can create a account at Blockcypher, choose a plan and replace this token with your own token in the env/creds-standalone/provendb.env file.

Can't change MongoDB password

It's not possible to change existing passwords once provendb is started. If you want to change passwords, you will have to delete the MongoDB database.

You can do this by removing the volume containing that database, for example:

docker volume rm $(docker volume ls -q | grep provendb-data)

Compatibility

This specific deployment of ProvenDB has been tested on the following configurations:

OS Docker version
macOS Catalina Docker Desktop: 2.1.0.1, Docker Engine: 19.03.1, Docker Compose: 3.4
Windows 10 Pro Docker Desktop: 2.1.0.4, Docker Engine: 19.03.4
Ubuntu 18.04 Server Docker Engine: 18.09.7, Docker Compose: 3.4

This deloyment works best with 8GB of memory available for Docker Engine.

Branch Information

This repository contains the following branches:

  1. dev: Contains the latest versions of the ProvenDB services. These is cuttent edge code, and may not yet be 100% bug free.
  2. pre-release: Contains versions of ProvenDB services which are not marked as stable yet, but have passed the nightly tests and most likely will be marked as stable soon.
  3. master: Contains stable versions of all ProvenDB services.

Contact

If you run into any issues, or wish to discuss a custom deployment of ProvenDB for your blockchain project, please email us at support@southbanksoftware.com

Copyright © 2019 Southbank Software. All rights reserved.

About

Docker Compose to run ProvenDB services together

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published