2017-05-31 222 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去仍然是一個更好的選擇。

    相關問題