Bluemix创build连接到另一个容器的容器组

我们有一个运行在MongoDB上的Java应用程序,每个应用程序都在不同的Bluemix容器中。 两者都是单个 Bluemix容器。

我们希望使用我们的子域之一来提供Java应用程序: https://subdomain.mydomain.com ://subdomain.mydomain.com,它已经指向了Bluemix。 我们怎么办呢?

我们的方法

因为Java容器需要链接到Mongo容器,所以我们以编程方式创build了两个容器(我们没有在UI中find将容器链接到另一个容器的方法),如下所示:

 sudo bluemix ic run --name mongo-container -p 27017 -m 128 registry.eu-gb.bluemix.net/mycompany/mongo sudo bluemix ic run --name java-container --link mongo-container:mongo -p 8080 -m 128 registry.eu-gb.bluemix.net/mycompany/java 

这很好,但Java应用程序只能通过一个丑陋的Blumix IP访问,而不是通过https://subdomain.mydomain.com我们想要的。

如何使用Bluemix容器GROUP (UI中的SCALABLE容器)?

再次,我们不知道如何链接容器从UI,所以它应该是这样的

 sudo bluemix ic group-create --auto --name java-scalable -p 8080 -m 128 --hostname subdomain --domain mydomain.com registry.eu-gb.bluemix.net/mycompany/java 

根据文档,我们不能将一个容器组链接到一个容器,因为没有--link参数。

回到原来的问题。 我们如何使用https://subdomain.mydomain.com服务Java应用程序?

link选项基本上创build一个容器中的环境variables到另一个容器。

您可以对Bluemix中的可缩放容器执行相同的操作。

这是我做的步骤:

1)创build你的MongoDB容器:

 bx ic run --name ads-mongo -p 27017 -m 128 registry.ng.bluemix.net/namespace/mongo 

2)检查MongoDB容器find私有IP地址:

 bx ic inspect ads-mongo 

私有IP将在输出结束时,为了简洁,我仅添加下面的输出的一部分:

  "Ports": { "27017/tcp": [ { "HostIp": "172.31.0.235", "HostPort": "27017" } ] }, "PublicIpAddress": "" 

3)运行您的可伸缩容器,并包含一个或多个环境variables和MongoDB证书。 确保你改变你的Java代码,从你传递给可伸缩容器的环境variables中获取凭证:

 bx ic group-create --name ads-node -e "MONGO_URI=mongodb://172.31.0.235:27017" -p 3000 -m 128 --hostname ads-node --domain mybluemix.net registry.ng.bluemix.net/namespace/ads-nodebx 

在我的testing中,我使用了一个Node.js应用程序,它读取MongoDB凭据的MONGO_URI环境variables。

如果需要,您也可以为MongoDB容器指定一个公共IP,最终结果应该类似。 我看到的唯一区别是,您可以使用mongo命令行或其他工具访问您的数据库连接到数据库。

因此,遵循第二种方法,您可以在创buildBluemix容器组之前创buildMongoDB服务。 在创buildBluemix容器组的过程中,您可以在UI中的“ 高级选项”部分下绑定现有服务:

在这里输入图像说明

如果您之前创build了一个,则还可以在容器创build期间select使用自定义域:

在这里输入图像说明

在这种情况下,您将拥有一个包含现有服务的自定义域的容器。

您可以在Container集成文档中find有关绑定现有服务的更多信息。 您可以在更新应用程序文档中了解有关在Bluemix中创build自定义域的更多信息。