Docker, how to send a request (curl - get, post) one container to another container

GET request (and POST PUT ....) using curl in one container in another.

$ docker ps

CONTAINER ID IMAGE COMMAND PORTS NAMES b184219cd8f6 otp_totp "./run.sh" 0.0.0.0:3000->3000/tcp totp_api c381c276593f service "/bin/sh -c" 0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp service d0add6b1c72e mysql "/tmp/run.sh" 0.0.0.0:3306->3306/tcp mysql 

when I send a request curl -X GET http://localhost.3000 to totp_api container in local

totp_api return {'status':200}

but I want to send a request to the service container

like // curl -X GET http://localhost:3000 in the totp_api container in the service (docker exec -it / bin / bash), totp_api will return {'status':200} in the server container

 project_folder ใ„ด- docker-compose.yml # service, mysql container api_folder ใ„ด- docker-compose.yml # totp_api container 

please, some body tell me some tips.


after

api / folder / docker-compose.yml

 version: '3' services: totp: build: . container_name: totp_api volumes: - $PWD:/home ports: - "3000:3000" tty: true restart: always networks: - bridge networks: bridge: driver: bridge 

-

 $ docker-compose up -d $ docker network ls NETWORK ID NAME DRIVER SCOPE 4a05be5e600f bridge bridge local 503d0586c7ec host host local ######## #### 727bfc6cc21f otp_bridge bridge local ######## #### 3c19d98d9ca5 otp_default bridge local 

-

 $ docker network inspect otp_bridge [ { "Name": "otp_bridge", "Id": "727bfc6cc21fd74f19eb7fe164582637cbad4c2d7e36620c1c0a1c51c0490d31", "Created": "2017-12-13T06:12:40.5070258Z", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [ { "Subnet": "172.19.0.0/16", "Gateway": "172.19.0.1" } ] }, "Internal": false, "Attachable": true, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": { "02fa407062cdd5f6f368f2d17c5e68d2f9155d1d9b30c9edcbb2386a9ded648a": { "Name": "totp_api", "EndpointID": "860c47da1e70d304399b42917b927a8cc6717b86c6d1ee6f065229e33f496c2f", "MacAddress": "02:42:ac:13:00:02", "IPv4Address": "172.19.0.2/16", "IPv6Address": "" } }, "Options": {}, "Labels": { "com.docker.compose.network": "bridge", "com.docker.compose.project": "otp" } } ] 
+5
source share
1 answer

With a docker network and network commands , you can make sure that these containers are part of the same network.

A side effect of this unique network will be container A, which knows the name of container B: from totp_api you can ping or twist the service container with its name:

 ping service 

You can:

  • do it statically in the docker build file (and restart the new containers), check it at runtime by adding existing running containers to the new network.
+2
source

Source: https://habr.com/ru/post/1274016/


All Articles