0

我正在使用 Python(3.6) 开发一个项目,在该项目中我需要实现 Docker Hub API 以在用户的​​ docker hub 帐户上创建一个存储库并推送他的 docker 映像。

真实场景:用户将提供他的源代码以及 Dockerfile、他的用户名和 docker cloud 的 apikey,然后我必须在他的帐户上创建一个存储库并为他的源代码构建一个 Docker 映像并推送到他的 docker hub 帐户。

这是我尝试过的:

    tempdir = tempfile.mkdtemp()
    saved_unmask = os.umask(0o077)
    temp_dir_path = os.path.join(tempdir)
    archive_path = os.path.join(settings.MEDIA_ROOT, 'archives/', deployment.sourceFile.name)
    print(archive_path)
    # Extract uploaded archive inside temporary dir
    patoolib.extract_archive(archive_path, outdir=temp_dir_path)
    # Try to retrieve path of dockerfile directory
    docker_glob = os.path.join(temp_dir_path, "*", "Dockerfile")
    print(docker_glob)
    docker_file = glob.glob(docker_glob)[0]
    docker_folder = os.path.dirname(docker_file)
    print(docker_folder)
    docker_client = docker.from_env()
    print("Start Building your docker image...")
    docker_client.login(username='USERNAME', password='PASSWORD')
    docker_client.images.build(path=docker_folder, gzip=False, tag=deployment.deploymentName)
    image = docker_client.images.get(deployment.deploymentName)
    shutil.rmtree(tempdir)
    img_id = image.short_id
    print(img_id)

如您所见,目前我正在将图像推送到我自己的默认/存储库,但我想在用户帐户上创建一个存储库,然后将图像推送到他自己的帐户。而且,我可以使用apikey而不是passwordinlogin()方法吗?

我怎样才能做到这一点?

请帮帮我!

谢谢你,阿卜杜勒

4

0 回答 0