Docker如何将请求(curl - get,post)发送到另一个容器

时间:2017-12-13 05:07:33

标签: http docker

GET(和POST PUT ....)请求在一个容器中使用curl到另一个容器。

$ 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

当我向本地

中的curl -X GET http://localhost.3000发送请求totp_api container

totp_api返回{'status':200}

但我希望在service容器

中发送请求

curl -X GET http://localhost:3000中的totp_apiservice容器(docker exec -it / bin / bash)类似,totp_api会将{'status':200}返回{{ 1}}容器

server
请某些人告诉我一些建议

API /文件夹/搬运工-compose.yml

project_folder
             ㄴ- docker-compose.yml # service, mysql container
api_folder
         ㄴ- docker-compose.yml # totp_api container

-

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

1 个答案:

答案 0 :(得分:3)

使用docker networkingnetwork commands,您可以确保这些容器属于同一网络。

该唯一网络的副作用是容器A将知道容器B名称:从totp_api,您可以使用其名称ping {或卷曲service容器:

ping service

你可以:

  • 在docker compose文件中静态执行(并重新启动新容器), - 在运行时测试它,将现有正在运行的容器添加到新网络