簡體   English   中英

docker-compose:服務到服務的通訊無法按預期進行

[英]docker-compose: service-to-service communication not working as expected

我制作了api,它從多個來源收集數據(在此示例中,它們確實在88和99位置上發布了請求),然后通過幾個端點提供了這些數據的匯總。 然后,我有兩個應用程序從此api獲取數據並進行可視化。 我已經指出了這個問題:盡管docker -compose docunentation(許多教程)明確指出:

重要的是要注意HOST_PORT和CONTAINER_PORT之間的區別。 在上面的示例中,對於db,HOST_PORT為8001,容器端口為5432(默認為postgres)。 聯網的服務到服務通信使用CONTAINER_PORT。 定義HOST_PORT時,也可以在群集外部訪問該服務。

...但是我的2個應用仍然無法訪問api。

如果我在兩個應用程序上都公開了我的api端口,則會收到錯誤消息,指出已經提供了該端口(根據文檔的預期),但是我不明白的是為什么這些應用程序在不公開端口的情況下不能調用api(不是服務)服務通訊?)。 我還使用nginx找到了多個相同的解決方案,但是因為這是我自己的自由人項目,所以我想學習錯誤之處並以正確的方式進行操作,因為顯然我對文檔有誤解。 我現在的目標只是讓我的兩個應用程序能夠進行api調用。 目前僅在單個主機上,請任何人提供解決方案或提示和想法的幫助嗎?

我目前的碼頭工人組成

services:
  host:
    image: "api_host"
    ports:
      - 88:88
      - 99:99
  app1:
    image: "app"
    ports:
      - 7777:7777
  app2:
    image: "app"
    ports:
      - 8888:8888```

問題是,盡管您的撰寫文件顯示了3個容器,但這些容器未聯網在一起。 要解決此問題,請在撰寫文件中為其定義一個網絡。 這將確保您的主機和API可以在指定端口上相互通信。 它還將允許您基於服務名稱(即在配置文件中)調用API和主機。

使用網絡撰寫示例:

services:
  host:
    image: "api_host"
    ports:
      - 88:88
      - 99:99
    networks:
      - myapinetwork
  app1:
    image: "app"
    ports:
      - 7777:7777
    networks:
      - myapinetwork
  app2:
    image: "app"
    ports:
      - 8888:8888```

networks:
    myapinetwork:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM