如何将环境变量传递给dockerfile

时间:2020-12-31 12:49:29

标签: docker dockerfile

如何将 kaps-service 作为环境变量传递给我的 dockerfile

file.txt:- 匹配 $Match 名称产品

dockerfile:- 通过图片 ENV 匹配=kaps-service 复制文件.txt /etc/

要求是我想从 dockerfile 替换 file.txt 中的 $Match 值,或者我可以在启动 docker 容器时传递这个值吗?有办法吗?

1 个答案:

答案 0 :(得分:1)

从 Dockerfile,您可以使用以下内容:

FROM image

ARG Match="kaps-service"

COPY file.txt /etc/

RUN sed -i 's/$Match/'$Match'/g' /etc/file.txt

最后一行将所有出现的 $Match 替换为“kaps-service”。这将在构建步骤期间发生,您可以使用 --build-arg 标志修改 Match 参数

如果您希望在运行步骤 (docker run) 中进行替换,您可以使用 RUN 命令并将其放入一些脚本中,该脚本将在您的应用程序之前执行此命令。它可以是这样的:

FROM image

WORKDIR /app

ENV Match="kaps-service"

COPY file.txt /etc/
COPY run .

CMD "./run"

其中 run 是:

#!/bin/bash

sed -i 's/$Match/'$Match'/g' /etc/file.txt
# run you app

当您使用 docker run 启动容器时会发生更改,您可以修改 Match 变量将 -e Match=something 添加到命令中。