From c718fa7bcb7bb94fb191576dc36161aea0a54414 Mon Sep 17 00:00:00 2001 From: "aitor@oceanprotocol.com" Date: Mon, 13 Aug 2018 15:12:21 +0200 Subject: [PATCH] adding details --- README.md | 24 ++++++++++++++++++++++-- doc/img/docker-images.jpg | Bin 0 -> 23528 bytes 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 doc/img/docker-images.jpg diff --git a/README.md b/README.md index 7eebce0..7322855 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,10 @@ Ocean Keeper implementation where we put the following modules together: ## Get Started -For local development you can use Docker. +For local development you can use Docker & Docker Compose. To do that you need to have the newest versions available of both: + +* [Docker](https://www.docker.com/get-started) +* [Docker Compose](https://docs.docker.com/compose/) ### Docker @@ -35,7 +38,24 @@ The most simple way to get started is with Docker compose: docker-compose --project-name=ocean up ``` -This will give you a local instance of ocean protocol. +This will give you a local instance of Ocean Protocol. + +After having everything running, you could open the browser and access to the **pleuston frontend** application: + +``` +http://localhost:3000 +``` + +## Ocean components + +The Ocean Docker compose starts the following components: + +* **Pleuston** frontend application. Listening the **3000** port. +* **Provider backend**. Listening the **5000** port. +* **Keeper contracts**. Listening the **8545** port. +* **BigchainDB**. Listening the **9984** port. + +![Ocean Docker Images](doc/img/docker-images.jpg) ## Contributing diff --git a/doc/img/docker-images.jpg b/doc/img/docker-images.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5acc8875d33bc134047dbe824f30d97de6fd9cdc GIT binary patch literal 23528 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 literal 0 HcmV?d00001