如何使用具有自定义标签名称的python API构建本地docker映像

时间:2019-12-18 10:56:33

标签: python docker docker-api

我有这个脚本:

import docker
import os

localtag = "mypersonaltag"

client = docker.from_env()
dockerfile_path = os.path.dirname(os.getcwd())
print(dockerfile_path)

fname = dockerfile_path + "/Dockerfile"
path = os.path.dirname(fname)
image, build_log  = client.images.build(path=dockerfile_path, dockerfile='Dockerfile', tag='localtag', rm=True)
print(image)

如果我执行此脚本,它将创建和构建本地docker映像,其标签名称为localtag,但不作为 mypersonaltag。我尝试了所有其他可能的方法,如下所示,看看tag参数。并引发错误。

image, build_log  = client.images.build(path=dockerfile_path, dockerfile='Dockerfile', tag=localtag, rm=True)


    图片,build_log = client.images.build(path = dockerfile_path,dockerfile ='Dockerfile',tag = {localtag},rm = True)

但奇怪的是,此[image, build_log = client.images.build(path=dockerfile_path, dockerfile='Dockerfile', tag=localtag, rm=True)]命令可通过python编辑器完美运行,而使用python脚本则会产生错误。不知道为什么吗?但是,只要我在标签周围加上引号,就会中断的python脚本现在可以正常工作了。

>>> tag  = "test02"
>>> image, build_log  = client.images.build(path=path, dockerfile='Dockerfile', tag=tag, rm=True)
>>> print(image)
<Image: 'local_tag:latest', 'localtag:latest', 'test01:latest', 'test02:latest'>

1 个答案:

答案 0 :(得分:0)

image, build_log  = client.images.build(path=dockerfile_path, dockerfile='Dockerfile', tag=localtag, rm=True)

将变量传递给函数是一个问题,删除localtag周围的引号

如果您以tag={localtag}这样的方式传递变量,那么您对python来说:“嘿,将may变量放入set中,然后将此set传递给函数”。可能您会尝试使用f"{localtag}"来使用fstring构造(需要python3.6)。

--edit--

请告诉我们,您如何调用脚本?那是什么错误?