Search code examples
dockerblockchainhyperledger-sawtooth

Hyperledger sawtooth installation problems. No connectivity between host computer and docker container


I'm a student trying to learn something about blockchain with the hyperledger course from the linux foundation. I'm installing the sawtooth framework trough docker and I have some issues. I'm trying to check the connectivity from the host computer to the Docker container, running the following command:

curl http://localhost:8008/blocks

curl: (7) Failed to connect to localhost port 8008: Connection refused

Someone can help me to open this connection docker and host machine? I'm using a virtual machine with ubuntu, thanks a lot in advance!

Here is the yaml file:

version: "2.1"

services:

settings-tp:
image: hyperledger/sawtooth-settings-tp:1.0
container_name: sawtooth-settings-tp-default
depends_on:
  - validator
entrypoint: settings-tp -vv -C tcp://validator:4004

intkey-tp-python:
image: hyperledger/sawtooth-intkey-tp-python:1.0
container_name: sawtooth-intkey-tp-python-default
depends_on:
  - validator
entrypoint: intkey-tp-python -vv -C tcp://validator:4004

xo-tp-python:
image: hyperledger/sawtooth-xo-tp-python:1.0
container_name: sawtooth-xo-tp-python-default
depends_on:
  - validator
entrypoint: xo-tp-python -vv -C tcp://validator:4004

validator:
image: hyperledger/sawtooth-validator:1.0
container_name: sawtooth-validator-default
expose:
  - 4004
ports:
  - "4004:4004"
# start the validator with an empty genesis batch
entrypoint: "bash -c \"\
    sawadm keygen && \
    sawtooth keygen my_key && \
    sawset genesis -k /root/.sawtooth/keys/my_key.priv && \
    sawadm genesis config-genesis.batch && \
    sawtooth-validator -vv \
      --endpoint tcp://validator:8800 \
      --bind component:tcp://eth0:4004 \
      --bind network:tcp://eth0:8800 \
    \""

 rest-api:
 image: hyperledger/sawtooth-rest-api:1.0
 container_name: sawtooth-rest-api-default
 ports:
  - "8008:8008"
 depends_on:
  - validator
 entrypoint: sawtooth-rest-api -C tcp://validator:4004 --bind rest- api:8008

shell:
image: hyperledger/sawtooth-all:1.0
container_name: sawtooth-shell-default
depends_on:
  - rest-api
entrypoint: "bash -c \"\
    sawtooth keygen && \
    tail -f /dev/null \
    \""

Solution

  • you should pass the port from local computer to Docker container.

    more here

    try to pass -p 8008:8008 as an argument when running the container

    For example. docker run -d -p 8008:8008 my_image