run-aspnetcore-microservices icon indicating copy to clipboard operation
run-aspnetcore-microservices copied to clipboard

Ocelot's and docker-compose is not support each other configurations

Open armintodev opened this issue 1 year ago • 0 comments

Hello. I'm here to tell you the ocelot.json configuration is wrong by this Docker and docker-compose files. Your host and Ports are using the Docker internal network but I didn't see your config write this network bridge. we've 2 ways to solve this problem:

First:

  1. change all Host and Ports that you've written in the Ocelot ReRoutes configuration to this config so don't need network-bridge anymore: Host: "host.docker.internal" Port: "the exposed port in docker-compose file"

I think this will work right.

the final Sample ocelot.json file after I have just changed Host and Ports

"DownstreamPathTemplate": "/api/v1/Discount/{productName}", "DownstreamScheme": "http", "DownstreamHostAndPorts": [ { "Host": "host.docker.internal", "Port": 5003 //this port have exposed in docker-compose.override.yml file }

Second:

  1. create a network bridge in docker-compose and then use that network for all containers. In this way, ocelot will use Internal docker network that knows the Host and Ports.

Done.

the final Sample ocelot.json file after I have created the network-bridge

"DownstreamPathTemplate": "/api/v1/Discount/{productName}", "DownstreamScheme": "http", "DownstreamHostAndPorts": [ { "Host": "discount_api", // My container_name "Port": 80 //this port have exposed in DockerFile }

if you have any questions let's be easy and ask.

armintodev avatar Feb 16 '24 15:02 armintodev