2017-05-31 100 views
2

我有两个Docker容器哪有一个码头工人容器调用另一个泊坞容器

  1. 一个Web API
  2. 调用的Web API现在

,我的本地网络上

  • 控制台应用程序的API本地主机和控制台应用程序调用API没有问题。但是,我不知道这两件事是什么时候Docker化的,我怎么可能使Dockerized API的Url适用于Dockerized Console应用程序?

    我不认为我需要一个码头工人撰写,因为我是通过API的URL作为API的参数,所以它只是确保此事的Dockerized API's网址是Dockerized Console

    任何想法访问?

  • 回答

    2

    如果使用撰写功能,则可以轻松解决该问题。随着撰写,您只需创建一个配置文件(docker-compose.yml)是这样的:

    version: '3' 
    services: 
        db: 
        image: postgres 
        web: 
        build: . 
        command: python3 manage.py runserver 0.0.0.0:8000 
        volumes: 
         - .:/code 
        ports: 
         - "8000:8000" 
        depends_on: 
         - db 
    

    ,使其运行,只需调用up这样的:

    docker-compose up 
    

    这是运行所有的堆栈的最佳方式,请查看该参考文献: https://docs.docker.com/compose/

    成功!

    2

    这个想法不是传递url,而是要调用其他容器的主机名。
    Networking in Compose

    默认情况下撰写设立一个单一的网络为您的应用程序。服务的每个容器都加入默认网络,并且该网络上的其他容器都可以访问它们,并且可以通过与容器名称相同的主机名来发现它们。

    这是什么取代deprecated --link option

    如果您的容器未在单个Docker服务器节点上运行,则Docker Swarm Mode会在多个节点上启用该发现功能。

    2

    您可以使用link选项与docker run

    运行API:

    docker run -d --name api api_image 
    

    运行客户端:

    docker run --link api busybox ping api 
    

    您应该看到api可以通过码头工人解决。

    这就是说,与docker-compose去仍然是一个更好的选择。

    相关问题