【问题标题】:Deploy to IBM Containers without cf/ice CLI无需 cf/ice CLI 即可部署到 IBM Containers
【发布时间】:2015-09-25 19:02:39
【问题描述】:

我目前的工作流程是这样的:Bitbucket -> Wercker。

Wercker 正确构建了我的应用程序,但在部署时我迷失了方向。我正在尝试部署到我在 Bluemix 上的 IBM Containers 注册表(最近已退出测试版)。 使用我的 IBM 帐户凭据运行 docker login registry.ng.bluemix.net 会在我的本地计算机(OSX 上的 boot2docker)上返回 401: bad credentials。在我的部署步骤中,它在 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 注册表?我有一种感觉,我错过了一些明显的东西。我就是找不到。

【问题讨论】:

    标签: docker containers ibm-cloud wercker container-registry


    【解决方案1】:

    您需要使用 cf 的 Containers 插件或 ICE 工具来登录。

    Documentation

    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>
    

    对不起,我的 wercker newb。

    【讨论】:

    • 我认为 Wercker 不会读取在构建环境中创建的任何 docker 配置(它本身在 docker 中运行),但我会在有机会时报告。
    • 是的 - 有点。 ice 使用 cf 获取令牌,然后尝试初始化 docker(在 Wercker 上不起作用)。 cf 会将令牌保存到磁盘(在 buildroot 之外;)),以便您可以提取它并将其设置为推送的环境变量。
    • 谢谢 - 你让我开始走上正轨。我什至没有想过在部署环境中直接尝试 cf。
    【解决方案2】:

    问题在于注册表的身份验证使用令牌而不是您的用户 ID 和密码。 ice logincf ic login 会处理这个问题,但不幸的是,直接向上 docker login 将无法正常工作。

    这里还提供了一些用于初始化、构建和清理图像的脚本:https://github.com/Osthanes/docker_builder。这些用于 DevOps 服务交付管道,这可能与您正在构建的流程类似。

    【讨论】:

      【解决方案3】:

      Turns out: it's very possible.

      基本上:

      • 安装 CF cli
      • cf 登录 -a https://api.ng.bluemix.net
      • 从 ~/.cf/config.json 中提取令牌(AccessToken + "|" + OrganizationFields.Guid 中承载后的文本

      这取决于你想用它做什么。我在这里有一个非常详细的文章on Github。 您可以使用令牌作为密码,传递 'bearer' 作为用户名。

      @mods:这足以让我链接到另一个网站吗?我真的很讨厌复制这样的东西......

      【讨论】:

        【解决方案4】:

        您现在可以使用bx 命令的container-registry 插件生成令牌以访问IBM Bluemix Container Registry

        这些令牌可以是 read-onlyread-write,并且要么不会过期(除非被撤销),要么会在 24 小时后过期。

        令牌可以直接与docker login一起使用。

        阅读文档here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-19
          • 2016-04-05
          • 1970-01-01
          • 1970-01-01
          • 2015-04-02
          • 2015-05-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多