首页 > 解决方案 > 如何将环境变量传递给dockerfile

问题描述

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

file.txt:- 匹配 $Match 名称 prod

dockerfile:- FROM image ENV Match=kaps-service COPY file.txt /etc/

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

标签: dockerdockerfile

解决方案


从 Dockerfile 你可以使用类似的东西:

FROM image

ARG Match="kaps-service"

COPY file.txt /etc/

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

最后一行将用“kaps-service”替换所有出现的 $Match。这将在构建步骤中发生,您可以使用--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到命令中。


推荐阅读