📅  最后修改于: 2023-12-03 15:25:15.174000             🧑  作者: Mango
在 Dockerfile 中,我们可以使用 ARG 指令声明一个变量,然后在后续的指令中使用这个变量。但是,有时我们需要将变量的值传递到字符串中,以便在指令中动态使用。本文将介绍三种方法将变量传递到字符串 Dockerfile 中。
使用 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 命令可以在 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 变量替换可以在 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 的三种方法。根据实际情况选择最合适的方法来完成构建。