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

标签 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

如何使用 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

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

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

最佳答案

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

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

这是我做的步骤:

1) 创建您的 MongoDB 容器:

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

2) 检查 MongoDB 容器以找到私有(private) IP 地址:

bx ic inspect ads-mongo

私有(private) 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 容器分配公共(public) IP,最终结果应该相似。我看到的唯一区别是您可以使用 mongo 命令行或其他工具连接到数据库来访问您的数据库。

关于java - Bluemix 创建链接到另一个容器的容器组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44087532/

相关文章:

java - Spring + JAXB - 使用相同的元素根解码 XML

java - DNODE 作为一种让 Java 调用 NodeJS 函数的方法?

python - 如何使用 Flask 中的 DropDownMenu 获取 MongoDB 中的所有 IdObject

docker - Kubernetes中的Accumulo集群部署

node.js - Node Docker Image支持node --harmony

JavaFX:仅在更新标签时不在应用程序线程中?

java - ArrayList 获取对象属性的所有值

javascript - 如何在 Mongoose mapreduce 中调用相关模型

ruby-on-rails - Mongoid:对 MongoDB 的评论和用户对 MySQL 的评论?如何让它发挥作用

docker - 如何通过 Dockerfile 为特权用户复制/添加资源?