Dockerhub存储库描述

时间:2016-01-27 08:58:47

标签: docker markdown dockerhub

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

Dockerhub具有很好的功能,即源存储库中的README.md被视为存储库描述。实际上,存储库的描述并不总是来自主分支的最新README.md。它似乎是随机的或与最新版本相关。

示例存储库:

  • /
  • Dockerfile
  • README.md

分支机构:

标签:

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

现在的问题是:如果我将所有标签放在Autobuild上,那么它不可重现,哪个README.md将显示在存储库描述中。

是否有诀窍或是否有API可以设置说明?

我希望始终显示我的主/ README.md的最新提交!

3 个答案:

答案 0 :(得分:8)

DockerHub doc提及:

  

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

(参见例如tombatossals/dockerhub/nodejs

  

如果您的存储库中有README.md个文件,则会在存储库中将其用作完整描述。

     

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

注意,mentioned hereAndy,这不适用于手动构建。

  

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

OP问道:

  

是否有API调用,我可以设置回购的描述?

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

Issue 467报告了同样的不确定性:

  

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

issue 402报告:

  

“每隔一段时间,完整说明和Dockerfile页面中的内容都来自旧的发布标记。”

然后:

  

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

Issue 300确认:

  

我注意到两个明显的失败:

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

答案 1 :(得分:2)

dockerhub-description GitHub 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

答案 2 :(得分:1)

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

docker pushrm my-user/my-repo

它使用保存的Docker登录名,因此在docker login之后它“正常工作”。它还支持其他容器注册中心(码头,港口)。

对于CI使用,它也可以作为Docker containergithub action来使用。

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