【问题标题】:Dockerhub Repository DescriptionDockerhub 存储库说明
【发布时间】:2016-01-27 08:58:46
【问题描述】:

有人知道 dockerhub 如何管理自动构建存储库的描述吗?

Dockerhub 有一个很好的特性,即源存储库中的 README.md 被用作存储库描述。实际上,存储库的描述并不总是来自 master 分支的最新 README.md。它似乎非常随机或与最新版本有关。

示例存储库:

  • /
  • Dockerfile
  • README.md

分支机构:

  • 主人

标签:

  • V1.0
  • V1.1
  • V2.0
  • V2.1

现在的问题是:如果我将所有标签都放在 Autobuild 上,则无法重现哪个 README.md 将显示在存储库描述中。

它有什么技巧吗,或者是否有一个 API 可以让我设置描述?

我希望总是显示我的 master/README.md 的最新提交!

【问题讨论】:

    标签: docker markdown dockerhub


    【解决方案1】:

    DockerHub doc 提到:

    构建过程会在与您的Dockerfile 相同的目录中查找README.md

    (例如参见tombatossals/dockerhub/nodejs

    如果您的存储库中有README.md 文件,则在存储库中使用它作为完整描述。

    如果您在构建后更改完整描述,则会在下次自动构建运行时被覆盖。
    要进行更改,请修改 Git 存储库中的 README.md。

    注意,正如Andymentioned here,这不适用于手动构建。

    对于手动构建(您推送自己的映像),Docker Hub 不会窥探您的映像内部,也无法了解您的自述文件。
    您需要手动将 Readme 文本添加到 Information 部分。


    OP 询问:

    是否有 API 调用可以让我设置 repo 的描述?

    我不知道 (Docker Hub API was deprecated in docker 1.8+)


    Issue 467 报告相同的不确定性:

    有时自动构建系统仍会使用顶级README 文件。

    还有issue 402 报告:

    “每隔一段时间,完整描述和Dockerfile 页面中的内容将来自旧版本标签。”

    然后:

    “拉取READMEs 的规范是否已更改?它现在从源存储库中获取顶级README,而不是从指定Dockerfile 的目录中获取;考虑到一个常见的用例是Dockerfile 的存储库,这完全弄乱了文档。”

    Issue 300 确认:

    我注意到这里有两个明显的缺点:

    • a) README.md 在 Dockerfile 所在的子目录中不受尊重
    • b) 即使README.md 位于存储库的顶级(以及 Dockerfile)“有时”它也不会被读入并且描述是空白的;即使在强制推送到底层存储库之后。

    【讨论】:

    • 感谢您的回答,但我已经建立在几个标签和分支上,并且 README.md 在这种情况下似乎是随机的。我该如何控制?
    • @maybeg 是您的 Dockerfile 附近的自述文件吗?
    • 自述文件就在同一文件夹中的 Dockerfile 旁边。
    • @maybeg 你有一个全局 README,在你的 repo 的根文件夹中吗?
    • @maybeg 这可能会导致不确定性,因为我看到 github.com/tombatossals/dockerhub/tree/master/nodejs 在其根文件夹中没有任何内容。
    【解决方案2】:

    dockerhub-descriptionGitHub Action 可以从 README.md 文件更新 Docker Hub 描述。

        - name: Docker Hub Description
          uses: peter-evans/dockerhub-description@v2.1.0
          env:
            DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
            DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
            DOCKERHUB_REPOSITORY: peterevans/dockerhub-description
    

    您也可以在其他 CI 工具中独立于 GitHub Actions 使用它。

        docker run -v $PWD:/workspace \
          -e DOCKERHUB_USERNAME='user1' \
          -e DOCKERHUB_PASSWORD='xxxxx' \
          -e DOCKERHUB_REPOSITORY='my-docker-image' \
          -e README_FILEPATH='/workspace/README.md' \
          peterevans/dockerhub-description:2.1.0
    

    【讨论】:

      【解决方案3】:

      如果您正在寻找更新自述文件的工具,请查看docker-pushrm。它是一个 Docker CLI 插件,向 Docker 添加了一个新命令:docker pushrm(用于:push readme)。要更新 Dockerhub 上的 README,请运行:

      docker pushrm my-user/my-repo
      

      它使用保存的 Docker 登录,所以它在docker login 之后“正常工作”。它还支持其他容器注册中心(Quay、Harbor)。

      对于 CI 使用,它也可用作 Docker containergithub action

      如果您正在寻找技术答案,请查看 the codedocker-pushrm。简而言之:您需要使用您的用户名/密码to get a JWT token 发出 REST API 请求。然后使用该 JWT 令牌向update repo info 发出另一个 REST API 请求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-15
        • 2016-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-28
        • 2017-02-17
        • 1970-01-01
        相关资源
        最近更新 更多