如何自动更新Docker Hub的完整描述?

问题描述 投票:6回答:2

我正在使用Travis CI从Dockerfiles构建docker镜像,然后成功将它们推送到Docker Hub。

我已经创建了一个MD文件来描述图像以及如何使用它。我想在完整描述部分的Docker Hub上有相同的描述。

由于我将来可能会更新说明,因此我想让Travis CI使用新映像自动更新基于存储库中MD文件的描述。

谁知道怎么做?

docker travis-ci docker-registry dockerhub
2个回答
10
投票

Docker Hub does not expose any API开始,远程向Docker Hub发送内容的唯一方法是使用docker push命令,这限制了发送图像的用途。

另一方面,如果您让Docker Hub服务从Github或Bitbucket存储库为您构建映像,那么Doc​​ker Hub将通过获取该存储库中找到的README.md文件的内容来更新长描述。请参阅Docker Hub的Automated Build文档中的Understand the build process部分。

这意味着您在Github或Bitbucket上托管Dockerfile和README.md文件。


如果你真的需要首先在TravisCI上构建你的图像(也许是因为你也在构建的图像上运行自动化测试),那么你可以让TravisCI在Docker Hub上触发webhook,告诉Docker Hub在TravisCI确定它正在通过后构建图像测试。

为此,在Docker Hub中,像配置自动构建一样配置图像(因此关联Github或Bitbucket项目),但是停用自动化功能:

Docker Hub project build settings

然后在Build settings页面上向下滚动到Build Trigger部分并复制触发URL:

Docker Hub project build trigger

现在编辑.travis.yml文件并添加以下块(请注意<your account><your image>占位符):

after_success:
# notify Docker Hub to make a new build
- >
  [ "$TRAVIS_BRANCH" == "master" ]
  && curl -X POST -H "Content-Type: application/json"
  --data '{"docker_tag_name": "latest"}'
  https://registry.hub.docker.com/u/<your account>/<your image>/trigger/$DOCKER_HUB_TOKEN/

然后转到Travis CI网站上的项目页面,打开项目设置:

Travis CI project settings

并使用Docker Hub Build Settings页面上的触发器令牌值将DOCKER_HUB_TOKEN环境变量添加到Travis CI项目:

Travis CI project environment variables

您仍然需要与Docker Hub项目关联的Github或Bitbucket存储库,但Travis CI将指示Docker Hub何时构建您的映像。


4
投票

实际上,您可以使用API​​更新它

local code=$(jq -n --arg msg "$(<README.md)" \
    '{"registry":"registry-1.docker.io","full_description": $msg }' | \
        curl -s -o /dev/null  -L -w "%{http_code}" \
           https://cloud.docker.com/v2/repositories/"${image}"/ \
           -d @- -X PATCH \
           -H "Content-Type: application/json" \
           -H "Authorization: JWT ${token}")

查看详情here


0
投票

您可以使用此方法在管道中使用docker容器

https://hub.docker.com/r/sheogorath/readme-to-dockerhub

项目代码

https://github.com/SISheogorath/readme-to-dockerhub

Gitlab CI Pipeline配置看起来像这样

update-readme:
  stage: docs
  image:
    name: docker:stable
  services:
    - docker:dind
  script:
    - docker run --rm -v $(pwd)/README.md:/data/README.md -e DOCKERHUB_USERNAME=$CI_REGISTRY_USER -e DOCKERHUB_PASSWORD=$CI_REGISTRY_PASSWORD -e DOCKERHUB_REPO_PREFIX=$CI_REGISTRY_IMAGE -e DOCKERHUB_REPO_NAME=$CONTAINER_NAME sheogorath/readme-to-dockerhub
© www.soinside.com 2019 - 2024. All rights reserved.