带有traefik的docker中没有主机的不同站点中多个站点的负载均衡器

时间:2019-01-02 12:51:59

标签: docker docker-compose traefik

假设我有两个Web服务,说它们是 var canvas = document.getElementById('my_canvas'); var tempCanvas = document.getElementById('temp_canvas'); // use style display : none for this temp element var ctx = canvas.getContext('2d'); var tempCtx = tempCanvas.getContext('2d'); var imageObj = new Image(); ctx.canvas.width = 350; ctx.canvas.height = 450; imageObj.onload = function() { ctx.drawImage(imageObj, 0, 0,100,100); tempCtx.drawImage(imageObj, 0, 0,100,100); }; imageObj.src = 'https://davidwalsh.name/demo/ringo-ftw.jpg'; var base64 = tempCanvas.toDataURL(); w1,它们是由docker-compose部署的。

现在,我想为它们中的每个创建多个容器,并在它们前面创建一个负载平衡器,以使此服务可以访问:

w2

我搜索了,得到了dockercloud-haproxynginx-proxy

但是,不建议使用前者,而后者必须与主机名一起使用以区分不同的服务。

设置不同的主机尤其复杂,尤其是在开发环境中。

然后我找到了traefik。似乎更可配置。这是我使用的配置文件:

http://localhost:8880 //for service w1

http://localhost:8888 //for service w2

虽然仍然不能满足我的要求。

这可能是其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

您需要在w1和w2下添加匹配器-"traefik.frontend.rule=PathPrefixStrip:/"。否则,默认为Host:w1.project_name

此外,我相信jwilder / whoami使用端口8000而不是8080,因此将- "traefik.port=8080"更改为- "traefik.port=8000"