我有一個簡單的概念驗證系統,它有 2 個 API:一個用作網關,另一個是微服務。我已經為兩者創建了 docker 容器,并使用 docker compose 檔案將它們一起運行。
一切正常,除了我不確定如何限制直接呼叫微服務。
這是我的撰寫檔案:
version: '3.4'
services:
apigateway:
image: apigateway
container_name: api-gateway
build:
context: .
dockerfile: api_gateway/Dockerfile
ports:
- 7500:7500
networks:
- api-local
apiadmin:
image: apiadmin
container_name: api-admin
build:
context: .
dockerfile: api_admin/Dockerfile
ports:
- 7501:7501
networks:
- api-local
networks:
api-local:
external: true
我可以呼叫 localhost:7500/some_url 并得到回復。我也可以呼叫 localhost:7501/some_url 并且我也得到回應。但是,我想阻止客戶端直接呼叫 7501 微服務。我希望所有流量僅通過網關。
我可以過濾微服務中的 IP,如果不是來自網關 IP,則拒絕連接,但我想知道是否有更好的方法。
uj5u.com熱心網友回復:
您可以嘗試不要在 docker-compose 檔案中將微服務埠暴露給主機,它應該仍然可以在 docker 網路中訪問并且可以被網關訪問:
version: '3.4'
services:
apigateway:
image: apigateway
container_name: api-gateway
build:
context: .
dockerfile: api_gateway/Dockerfile
ports:
- 7500:7500
networks:
- api-local
apiadmin:
image: apiadmin
container_name: api-admin
build:
context: .
dockerfile: api_admin/Dockerfile
networks:
- api-local
networks:
api-local:
external: true
請注意,我洗掉了該apiadmin服務的埠映射。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/385913.html
標籤:码头工人 asp.net核心 docker-compose 微服务
上一篇:Docker容器在不同網路通信
下一篇:如何回圈字典鍵?
