Bluemix创建链接到另一个容器的容器组

时间:2017-05-20 15:15:52

标签: java mongodb docker containers ibm-cloud

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

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

我们的方法

因为Java容器需要链接到Mongo容器,所以我们以编程方式创建了两个容器(我们在UI中找不到将链接容器链接到另一个容器的方式),就像这样:

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访问。

如何在UI中使用Bluemix容器 GROUP 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

但是 according to the documentation我们无法将容器组链接到容器,因为没有--link参数。

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

2 个答案:

答案 0 :(得分:2)

因此,遵循第二种方法,您可以在创建Bluemix容器组之前创建MongoDB服务。在创建Bluemix Container Group期间,您可以在UI中的高级选项部分下绑定现有服务:

enter image description here

如果您之前创建了一个自定义域,您也可以选择在创建容器期间使用自定义域:

enter image description here

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

您可以在Container Integration Documentation中找到有关绑定现有服务的更多信息。您可以在Updating Apps Documentation中了解有关在Bluemix中创建自定义域的详细信息。

答案 1 :(得分:2)

link选项基本上在一个容器中创建环境变量以到达另一个容器。

您可以在Bluemix中对可扩展容器执行相同的操作。

以下是我所做的步骤:

1)创建MongoDB容器:

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

2)检查MongoDB容器以查找专用IP地址:

bx ic inspect ads-mongo

私有IP将在输出结束时,为了简洁起见,我只是在下面添加部分输出:

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

3)运行可伸缩容器,并在MongoDB凭据中包含一个或多个环境变量。确保更改Java代码以从传递给可伸缩容器的环境变量中获取凭据:

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

在我的测试中,我使用了Node.js应用程序,它读取了MongoDB凭据的MONGO_URI环境变量。

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