【问题标题】:Bluemix create container group linking to another containerBluemix 创建链接到另一个容器的容器组
【发布时间】:2017-05-20 15:15:51
【问题描述】:

我们有一个使用 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 应用程序提供服务?

【问题讨论】:

    标签: java mongodb docker containers ibm-cloud


    【解决方案1】:

    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 命令行或其他工具连接到数据库来访问您的数据库。

    【讨论】:

      【解决方案2】:

      因此,按照第二种方法,您可以在创建 Bluemix Container Group 之前创建一个 MongoDB 服务。在 Bluemix Container Group 创建期间,您可以在 UI 的 Advanced Options 部分下绑定现有服务:

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

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

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

      【讨论】:

        猜你喜欢
        • 2018-11-08
        • 2018-01-26
        • 1970-01-01
        • 2021-11-24
        • 1970-01-01
        • 1970-01-01
        • 2017-10-15
        • 1970-01-01
        相关资源
        最近更新 更多