无需 cf/ice CLI 即可部署到 IBM Containers
Deploy to IBM Containers without cf/ice CLI
我目前的工作流程是这样的:Bitbucket -> Wercker。
Wercker 正确构建了我的应用程序,但在部署时我迷路了。我正在尝试部署到我在 Bluemix 上的 IBM Containers 注册中心(最近结束了测试版)。
运行 docker login registry.ng.bluemix.net
使用我的 IBM 帐户凭据 returns 401:本地计算机上的凭据错误(OSX 上的 boot2docker)。它在我的部署步骤中对 Wercker 执行相同的操作。
这是我的部署步骤:
deploy:
box:
id: node
tag: 0.12.6-slim
steps:
- internal/docker-push:
username: $USERNAME
password: $PASSWORD
tag: main
entrypoint: node bundle/main.js
repository: <my namespace/<my container name> (removed for this post)
registry: registry.ng.bluemix.net
如您所见:我已根据 Wercker Docs 将用户名和密码作为环境变量传入(并且我已测试它们是否正确传入)。
基本上:如何在不使用 ice/cf CLI 的情况下将容器推送到 IBM 注册表?我有一种感觉,我错过了一些明显的东西。我就是找不到。
您需要使用Containers plugin for cf 或ICE 工具登录。
Cloud Foundry 插件:
cf ic login
冰:
ice login
你能创建一个可以先登录的自定义脚本吗?如果环境已经有 cf
容器扩展:
- script:
name: Custom login for Bluemix Containers
code: cf login -u <username> -p <password> -o <org> -s <space>
对不起我的笨蛋新人。
问题是注册表的身份验证使用令牌而不是您的用户 ID 和密码。 ice login
和 cf ic login
会解决这个问题,但不幸的是,直接向上 docker login
是行不通的。
此处还提供了一些用于初始化、构建和清理图像的脚本:https://github.com/Osthanes/docker_builder。这些用于 DevOps 服务交付管道,这可能与您正在构建的流程类似。
Turns out: it's very possible.
基本上:
- 安装 CF cli
- cf login -a https://api.ng.bluemix.net
- 从 ~/.cf/config.json 中提取令牌(AccessToken 中承载后的文本 +“|”+ OrganizationFields.Guid
这取决于你想用它做什么。我这里有一篇非常详细的文章 on Github。
您可以使用令牌作为密码,将 'bearer' 作为用户名传递。
@mods:这足以让我 link 到另一个站点吗?我真的很讨厌复制这样的东西...
您现在可以使用 bx
命令的 container-registry
插件生成访问 IBM Bluemix Container Registry
的令牌。
这些令牌可以是 read-only
或 read-write
并且不会过期(除非被撤销)或在 24 小时后过期。
令牌可以直接与docker login
一起使用。
阅读文档here
我目前的工作流程是这样的:Bitbucket -> Wercker。
Wercker 正确构建了我的应用程序,但在部署时我迷路了。我正在尝试部署到我在 Bluemix 上的 IBM Containers 注册中心(最近结束了测试版)。
运行 docker login registry.ng.bluemix.net
使用我的 IBM 帐户凭据 returns 401:本地计算机上的凭据错误(OSX 上的 boot2docker)。它在我的部署步骤中对 Wercker 执行相同的操作。
这是我的部署步骤:
deploy:
box:
id: node
tag: 0.12.6-slim
steps:
- internal/docker-push:
username: $USERNAME
password: $PASSWORD
tag: main
entrypoint: node bundle/main.js
repository: <my namespace/<my container name> (removed for this post)
registry: registry.ng.bluemix.net
如您所见:我已根据 Wercker Docs 将用户名和密码作为环境变量传入(并且我已测试它们是否正确传入)。
基本上:如何在不使用 ice/cf CLI 的情况下将容器推送到 IBM 注册表?我有一种感觉,我错过了一些明显的东西。我就是找不到。
您需要使用Containers plugin for cf 或ICE 工具登录。
Cloud Foundry 插件:
cf ic login
冰:
ice login
你能创建一个可以先登录的自定义脚本吗?如果环境已经有 cf
容器扩展:
- script:
name: Custom login for Bluemix Containers
code: cf login -u <username> -p <password> -o <org> -s <space>
对不起我的笨蛋新人。
问题是注册表的身份验证使用令牌而不是您的用户 ID 和密码。 ice login
和 cf ic login
会解决这个问题,但不幸的是,直接向上 docker login
是行不通的。
此处还提供了一些用于初始化、构建和清理图像的脚本:https://github.com/Osthanes/docker_builder。这些用于 DevOps 服务交付管道,这可能与您正在构建的流程类似。
Turns out: it's very possible.
基本上:
- 安装 CF cli
- cf login -a https://api.ng.bluemix.net
- 从 ~/.cf/config.json 中提取令牌(AccessToken 中承载后的文本 +“|”+ OrganizationFields.Guid
这取决于你想用它做什么。我这里有一篇非常详细的文章 on Github。 您可以使用令牌作为密码,将 'bearer' 作为用户名传递。
@mods:这足以让我 link 到另一个站点吗?我真的很讨厌复制这样的东西...
您现在可以使用 bx
命令的 container-registry
插件生成访问 IBM Bluemix Container Registry
的令牌。
这些令牌可以是 read-only
或 read-write
并且不会过期(除非被撤销)或在 24 小时后过期。
令牌可以直接与docker login
一起使用。
阅读文档here