将命令输出分配给 Dockerfile 中的 ARG 变量

Cod*_*ern 6 environment-variables docker dockerfile devops

我希望能够在 Dockerfile 内将命令的输出分配给 ARG 变量。例如:

ARG myvar=$(echo 'hello')
Run Code Online (Sandbox Code Playgroud)

但是,这给了我语法错误

ERROR: Dockerfile parse error line 68: ARG requires exactly one argument
Run Code Online (Sandbox Code Playgroud)

有办法解决这个问题吗?

Luc*_*iva 0

虽然不是问题的直接答案,但我解决这个问题的方法是创建一个负责启动 Dockerfile 构建的 bash 脚本。该脚本运行我需要的命令,然后将其作为参数传递给 Dockerfile。例子:

#!/usr/bin/env bash

MY_VAR=$(echo 'hello')
docker build --build-arg MY_VAR=${MY_VAR} -t myapp .
Run Code Online (Sandbox Code Playgroud)

然后 Dockerfile 得到它:

ARG MY_VAR
# MY_VAR now equals 'hello'
Run Code Online (Sandbox Code Playgroud)