【发布时间】:2018-06-15 11:28:01
【问题描述】:
我的微服务很少,我们称之为food-ms、receipt-ms、ingredients-ms 和frontend,React App 使用这些微服务。
他们每个人都在/api/[methods]公开API。
我想使用 Docker 和带有下一个属性的 docker-compose 创建生产和开发环境:
应用程序应该在单个主机上可用。例如,在生产主机中应该是
http://food-app.test,对于开发它应该是(理想情况下)本地主机-
每个微服务和前端都应位于单个主机上,但路径不同。例如,
food-msAPI 应位于localhost/food/api,receipt-msAPI 应位于localhost/receipt/api等。前端应位于localhostroot/路径。 理想情况下,我希望能够在外部容器中运行一些服务以便于调试,但仍可通过
localhost/{service}/api进行反向代理。
我找到了一个traefik 反向代理,并对其进行了一些试验,但遇到了问题:
- 如何使应用程序在某些可预测的域中可用,例如
localhost。目前,我可以通过在Host标头(如<container-name>.<network-name>.docker.localhost)中指定一个奇怪的主机来将请求代理到特定后端 似乎traefik.toml中描述的前端没有效果。 - 如何根据路径将请求从一个前端路由到不同的后端?
- 如何将请求路由到外部 IP 和端口(我想用它在容器外运行服务以进行调试)?我应该在 docker 中使用
host网络吗?
提前致谢。
这是我的traefik.toml
defaultEntryPoints = ["http"]
[entryPoints]
[entryPoints.http]
address = ":80"
[file]
[frontends]
[frontends.food]
entrypoints = ["http"]
backend="food"
[frontends.receipts]
entrypoints = ["http"]
backend="receipts"
那些前端似乎没有得到应用,因为如果我推荐它们,仪表板不会改变。
【问题讨论】:
-
对不起,我不知道traefik,但建议你可以使用广泛使用的nginx反向代理作为反向代理服务器。
标签: docker docker-compose traefik