【问题标题】:Bluemix: service bound to container does not appear in VCAP_SERVICESBluemix:绑定到容器的服务未出现在 VCAP_SERVICES 中
【发布时间】:2015-05-06 10:23:18
【问题描述】:

我正在尝试使用 IBM Containers for Bluemix 来部署容器并将其绑定到 Bluemix 服务。

我从一个现有的 Bluemix 应用程序开始,它绑定到我想要的 MongoDB 服务。我验证它的VCAP_SERVICES 环境变量已正确填充:

$ cf env mamacdon-app
Getting env variables for app mamacdon-app in org mamacdon@ca.ibm.com / space dev as mamacdon@ca.ibm.com...
OK

System-Provided:
{
    "VCAP_SERVICES": {
        "mongodb-2.4": [
            {
                "credentials": { /*private data hidden*/ },
                "label": "mongodb-2.4",
                "name": "mongodb-1a",
                "plan": "100",
                "tags": [ "nosql", "document", "mongodb" ]
            }
        ]
    }
 ...

然后我使用ice 命令在Bluemix 中运行我的图像,并使用--bind mamacdon-app 参数将其绑定到我的CF 应用程序:

$ ice run --name sshparty \
  --bind mamacdon-app \
  --ssh "$(cat ~/.ssh/id_rsa.pub)" \  # For SSH access
  --publish 22 \                      # For SSH access
  registry-ice.ng.bluemix.net/ibmliberty:latest

顾名思义,该映像是一个基于 IBM Websphere Liberty docker 映像的简单示例 —— 足以让我通过 SSH 进入并四处寻找。

此时,Containers 仪表板告诉我该服务已绑定到我的容器:

但是当我最终ssh进入容器时,环境中不包含VCAP_SERVICES变量:

$ ssh -i ~/.ssh/id_rsa root@129.41.232.212
root@instance-000123e2:~# env
TERM=xterm
SHELL=/bin/bash
SSH_CLIENT=[private data hidden]
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=[omitted]
MAIL=/var/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/root
LANG=en_CA.UTF-8
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=[private data hidden]
LESSOPEN=| /usr/bin/lesspipe %s
LESSCLOSE=/usr/bin/lesspipe %s %s
_=/usr/bin/env
root@instance-000123e2:~#

我希望注入 VCAP_SERVICES 变量。我做错了什么?

【问题讨论】:

    标签: ssh docker containers cloud-foundry ibm-cloud


    【解决方案1】:

    我认为 ssh 守护程序的启动方式存在问题,它无法看到 VCAP_SERVICES 环境变量。

    但是,您可以通过以下测试确认容器的命令将看到变量:

    ice run registry-ice.ng.bluemix.net/ibmliberty --bind mamacdon-app --name vcap_services_party printenv; sleep 60
    

    然后,在 printenv 输出中使用ice logs vcap_services_party 确认它

    【讨论】:

    • 这行得通。是的,sshd 似乎没有将VCAP_SERVICES 变量的值注入通过 SSH 打开的终端会话中。容器中的其他进程能够看到 VCAP_SERVICES 变量就好了。
    【解决方案2】:

    你可以试试下面的:

    ice run registry-ice.ng.bluemix.net/lintest/tradelite --bind yourappname --name yournewcontainer name
    

    图像出现后,运行以下命令。

    # echo $VCAP_SERVICES
    

    欲了解更多信息,请查看Containers Docs.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-21
      • 2015-11-25
      • 1970-01-01
      • 2016-01-03
      • 2016-03-29
      • 1970-01-01
      相关资源
      最近更新 更多