2016-09-23 210 views
0

我有一个nginx路由到两个应用程序容器。码头集装箱连接

我在一个容器中运行的登录应用程序 - account.myproduct.local

我的其他应用程序在其他容器中运行 - calendar.myproduct.local

如果请求被发到calendar.practo.local它使一个OpenID身份验证重定向到account.myproduct.local

问题: 我已经链接的容器,但由于account.myproduct.local是不是从日历容器解析(卡尔ndar.myproduct.local),登录不会发生。 我应该如何解决?

回答

0

您可以使用link命令将别名添加到calendar.myproduct.local的/ etc/hosts中。您的日历链接会是这样的:

--link account_container_name:account.myproduct.local

这样calendar.myproduct.local将能够解析主机名account.myproduct.local而不必知道它的IP。

+0

account.myproduct.local通过通过nginx容器的代理解析。我应该在这种情况下链接nginx然后,它会工作吗? ' - 链接nginx:account.myproduct.local'。另外我听说docker1.9链接已被弃用,docker有自己的网络应该使用。如何使用它? –

+0

添加带点的链接不起作用! services.calendar.links包含无效类型,它应该是一个字符串 services.accounts.links包含一个无效类型,它应该是一个字符串 –

+0

它的Github代码 - https://github.com/alok87/dockerex –

0

已解决 随着码头版本1.10及以上。不需要链接容器,因为docker-compose创建默认网络,所有服务都可以通过容器名称发现。将服务名称更改为nginx服务器名称解决了我的问题。

现在accounts.myproduct.local和calendar.myproduct.local是可解析的从外部(coz of the /etc/hosts in my mac),并且也可分辨内部通信(using the service name which is resolvable in the same network

详细地正确例如:https://github.com/alok87/dockerex

新搬运工 - 构成文件:

version: '2' 

services: 
    accounts.myproduct.local: 
    build: accounts 

    calendar.myproduct.local: 
    build: calendar 

    router: 
    build: router 
    ports: 
    - 80:80