📜  将 varalbe 传递到字符串 dockerfile - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:25:15.174000             🧑  作者: Mango

将 variable 传递到字符串 Dockerfile

在 Dockerfile 中,我们可以使用 ARG 指令声明一个变量,然后在后续的指令中使用这个变量。但是,有时我们需要将变量的值传递到字符串中,以便在指令中动态使用。本文将介绍三种方法将变量传递到字符串 Dockerfile 中。

方法一:使用 ENV 指令

使用 ENV 指令可以将变量的值传递到 Dockerfile 中的字符串。在 Dockerfile 中,可以使用 ${} 语法来引用环境变量的值。例如:

FROM alpine
ARG MY_VAR
ENV MY_VAR $MY_VAR
RUN echo "My var is ${MY_VAR}"

在构建镜像时,可以通过 --build-arg 参数来传递 MY_VAR 的值:

docker build --build-arg MY_VAR=my_value .
方法二:使用 sed 命令

使用 sed 命令可以在 Dockerfile 中将变量的值替换到字符串中。例如:

FROM alpine
ARG MY_VAR
RUN sed "s/MY_VAR/${MY_VAR}/" /path/to/file > /path/to/new_file
RUN cat /path/to/new_file

在构建镜像时,可以通过 --build-arg 参数来传递 MY_VAR 的值:

docker build --build-arg MY_VAR=my_value .
方法三:使用 shell 变量替换

使用 shell 变量替换可以在 Dockerfile 中将变量的值替换到字符串中。例如:

FROM alpine
ARG MY_VAR
RUN MY_VAR=${MY_VAR} sh -c 'echo "My var is ${MY_VAR}"'

在构建镜像时,可以通过 --build-arg 参数来传递 MY_VAR 的值:

docker build --build-arg MY_VAR=my_value .

以上就是将变量传递到字符串 Dockerfile 的三种方法。根据实际情况选择最合适的方法来完成构建。