blockade icon indicating copy to clipboard operation
blockade copied to clipboard

How to use blockade API inside container

Open HerculanoGripp opened this issue 6 years ago • 1 comments

Hi guys, first of all thanks for the great tool.

I'm trying to use Blockade in my stack of tests and have some doubts. I have two containers one is server and other one is the client. I'm running my tests in client and in some cases need to change network parameters of server or client container. In documentation tells about Blockade API but i don't know how to use the API inside client container.

See below my setup configuration of blockade.yaml file

  containers:
  server:
    image: ubuntu:trusty
    command: sh -c "/bin/sleep 300000"
    volumes: ".": "/home/server/"
    expose: [80]
    ports: [5000]

  client:
    image: ubuntu:trusty
    command: sh -c "echo $SERVER_PORT_5000_TCP_ADDR ' google.com.br' >> /etc/hosts; ping $SERVER_PORT_5000_TCP_ADDR"
    volumes:
      "/home/user/client_app": "/home/client_app"
    links: ["server"]

  network:
  flaky: 80%
  slow: 75ms 100ms distribution normal

HerculanoGripp avatar Nov 14 '18 16:11 HerculanoGripp

The API is bound to the host, not one of the containers. So if you want to access it from a container, you'll need to know an IP address or hostname for the host. This is more complicated than it should be and I think it can even vary depending on whether you are using Docker for Mac/Windows versus from Linux directly. Here is is a blog post and sample code you could use to do this: https://dev.to/bufferings/access-host-from-a-docker-container-4099 https://github.com/bufferings/docker-access-host

Once you figure out the hostname, you should be able to directly connect to the Blockade API port on that hostname (default: 5000). I hope this helps!

labisso avatar Nov 17 '18 19:11 labisso