Bluemix:绑定到容器的服务未出现在 VCAP_SERVICES 中
Bluemix: service bound to container does not appear in VCAP_SERVICES
我正在尝试使用 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 进入并四处闲逛。
此时,容器仪表板告诉我该服务已绑定到我的容器:
但是当我最终 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
变量被注入。我做错了什么?
你能试试下面的方法吗:
ice run registry-ice.ng.bluemix.net/lintest/tradelite --bind yourappname --name yournewcontainer name
图像出现后 运行 以下内容。
# echo $VCAP_SERVICES
有关详细信息,请查看 Containers Docs.
我认为 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
确认
我正在尝试使用 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 进入并四处闲逛。
此时,容器仪表板告诉我该服务已绑定到我的容器:
但是当我最终 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
变量被注入。我做错了什么?
你能试试下面的方法吗:
ice run registry-ice.ng.bluemix.net/lintest/tradelite --bind yourappname --name yournewcontainer name
图像出现后 运行 以下内容。
# echo $VCAP_SERVICES
有关详细信息,请查看 Containers Docs.
我认为 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