在Azure Devops管道Docker构建任务中将文件内容作为构建参数传递

时间:2020-02-29 08:42:44

标签: bash azure shell docker azure-devops

我想使用--build-arg在docker build命令中将文件内容作为build参数传递。我在终端中使用以下命令,并且工作正常

docker build -t示例--build-arg PRIVATE_KEY =“ $(cat / home / key)”

但是当我在azure devops管道docker构建任务中尝试相同的事情并在参数框中传递--build-arg PRIVATE_KEY="$(cat /home/key)"时,它将采用$(cat /home/key)的值,而不执行cat命令。

2 个答案:

答案 0 :(得分:1)

我不认为这是docker build任务的问题。它适用于命令行任务的原因可能是因为在本地计算机上或命令行任务中运行docker build命令时,命令行首先将评估“ $()”中包含的内容,然后执行值将传递到docker ARG。但是对于docker build任务,它直接调用docker.exe,因此无法评估“ $()”中的表达式。

由于找到了使用命令行任务的解决方法。我建议您使用命令行任务而不是docker任务。

我也尝试了@ 4c74356b41的建议。我定义了管道变量key并将密钥的值放入此变量中,并在docker build任务中引用此变量。

当我在“参数”框中输入--build-arg PRIVATE_KEY="$(key)"时,我在下面为我工作。

  • 变量 enter image description here

  • Docker构建任务

enter image description here

答案 1 :(得分:0)

您需要将此值放入变量中并引用变量,或使用脚本步骤从文件内容中创建变量并引用变量。

另一种选择是将密钥作为上下文传递给docker构建,并在构建内部提取该值

相关问题