簡體   English   中英

通過HTTP for API Gateway在鏈接的Docker容器之間進行通信

[英]Communication between linked docker containers over http for api gateway

我目前正在使用golang網絡應用程序,該應用程序目前是一個由許多軟件包組成的應用程序,並已部署在單獨的docker容器中。 我有一個redis實例和一個mysql實例作為單獨的容器進行部署和鏈接。 為了獲取它們的地址,我將它們從docker設置的環境變量中拉出。 我想實現一種api網關模式,其中有一個服務公開了稱為“ api”的HTTP端口(對於HTTP為80或對於HTTPs為443),該服務將請求轉發給其他服務。 理想情況下,其他服務不會公開公開任何端口,而是直接與其所依賴的服務鏈接。

因此,api將與除mysql和redis之外的所有服務鏈接。 任何需要驗證用戶會話信息的服務都將與用戶服務等鏈接。我的問題是,如何使我的http服務器偵聽docker鏈接到我的容器之間的端口上的http請求。

最簡單的方法是Docker Compose 您可以輕松定義所需的服務,然后Docker Compose會在專用網絡中自動鏈接它們。 假設您有goappredismysql實例,並想使用nginx作為反向代理。 docker-compose.yml文件如下所示:

services:
  redis:
    image: redis
  mysql:
    image: mysql
  goapp:
    image: myrepo/goapp
  nginx:
    image: nginx
    volumes:
      - /PATH/TO/MY/CONF/api.conf:/etc/nginx/conf.d/api.conf
    ports:
      - "443:443"
      - "80:80"

好處是您可以按名稱引用其他服務中的任何服務。 因此,您可以從goapp以主機名mysql等訪問MySQL服務器。 唯一公開的端口(即從主機可訪問的端口)是nginx容器的44380

您可以使用docker-compose up啟動整個系統!

暫無
暫無

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

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