I am building a mobile app running sawtooth SDK. I want to submit a transcation to my sawtooth network and I am getting this error : java.net.SocketTimeoutException: failed to connect to /172.18.0.1 (port 8008) from /192.168.2.5 (port 46198) after 10000ms
I am using a VM with Ubuntu 16.04 with bridged network configuartions and the IP of the VM is 192.168.2.8
. I am setting up the sawtooth network with docker using docker-compose following the official instructions found here. This is the yaml file :
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 \
\""
My Host Computer is running Windows 10 Pro with IP 192.168.2.6
The IP on my mobile phone is 192.168.2.5
My container has this IP: 172.18.0.1
. I understand that If I want them to communicate they need to be in the same network and I tried to change the containers IP, but I had no luck. Are there any suggestions on how I can fix this? thanks.
With this piece of code from your configuration
rest-api:
...
ports:
- "8008:8008"
Docker maps host's port 8008 to container's 8008. That means the container is listening on host's 8008. So you just need to connect to 192.168.2.8:8008, no need to mess with routing or anything.