当前位置: 首页 > 面试题库 >

我如何在Docker中进行构建期间设置环境变量

齐文栋
2023-03-14
问题内容

我正在尝试在构建期间在Docker容器中设置环境变量,但没有成功。使用run命令设置它们可以工作,但是我需要在构建期间进行设置。

Docker文件

FROM ubuntu:latest
ARG TEST_ENV=something

我正在使用的命令

docker build -t --build-arg TEST_ENV="test" myimage .

跑步

docker run -dit myimage

我正在通过检查可用的环境变量

docker exec containerid printenv

结果是

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=e49c1abfd58b
TERM=xterm
no_proxy=*.local, 169.254/16
HOME=/root

TEST_ENV不存在


问题答案:

ARG用于设置在docker build过程中使用的环境变量-它们不会出现在最终图像中,这就是为什么在使用时看不到它们的原因docker run

您使用ARG的设置仅在构建映像时相关,而从映像运行的容器不需要使用这些设置。您可以使用ENVevnvironment变量在构建过程中和在容器中使用。

有了这个Dockerfile:

FROM ubuntu                                                                                                            
ARG BUILD_TIME=abc                                                                                                     
ENV RUN_TIME=123                                                                                                       
RUN touch /env.txt                                                                                                     
RUN printenv > /env.txt

您可以像完成操作一样覆盖build arg docker build -t temp --build-arg BUILD_TIME=def .。然后,您将获得期望的结果:

> docker run temp cat /env.txt                                                                                         
HOSTNAME=b18b9cafe0e0                                                                                                  
RUN_TIME=123                                                                                                           
HOME=/root                                                                                                             
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin                                                      
BUILD_TIME=def                                                                                                         
PWD=/


 类似资料:
  • 我试图在构建过程中设置docker容器中的环境变量,但没有成功。使用运行命令时设置它们有效,但我需要在构建过程中设置它们。 Dockerfile文件 我用来构建的命令 运行 我正在检查可用的环境变量,通过使用 结果是 TEST_ENV不在场

  • 并且生成失败: 任务“:MyProject:SetEnv”执行失败。 启动进程“command”export“时出现问题 我已经单独测试了它:值确实会被传递,并且我的测试任务接收所有东西,无论是systemProperty、environment变量还是jvmarg。 所以Gradle本身在这里并没有什么问题。 当我在实际项目中尝试时,问题就出现了。它使用Spring进行依赖注入。我可能错了,但看

  • 在Jenkins中,您可以使用类似cron的时间定义将作业设置为周期性构建。 此外,还可以配置参数化作业。这意味着您可以随时设置一些预定义环境变量的值,这些变量将在配置中使用。e、 g.git上的某个分支您可以让用户设置环境变量“branch”的值,然后使用 在配置中。 但这似乎不适用于周期性构建作业配置的值。 我的问题: 我正在使用作业生成器插件。它基本上创建新的(不是参数化的,而是周期性运行的

  • 这个码头商。yml: 使用这个。env文件(它位于根文件夹中,如docker-compose.yml和Dockerfile): 和节点服务器启动中的以下代码: 我真的更喜欢使用第一种或第二种方法 docker版本:18.06.1-CE docker-compose版本:1.19.0

  • 问题内容: 我需要在python脚本中设置一些环境变量,并且我希望从python调用的所有其他脚本(shell脚本)(将是子进程)来查看设置的环境变量。该值为数字。 如果这样做,它会抱怨说1必须是字符串。我也想知道一旦设置它,如何在python(在脚本的后半部分)中读取环境变量。 问题答案: 你可能需要考虑其他方面的代码健壮性; 当你将整数值的变量存储为环境变量时,请尝试 然后为了进行检索,请考虑

  • 问题内容: 如何从内部设置一些环境变量以与类似命令一起使用? 这是我目前所拥有的: 我想在启动脚本中设置环境变量(例如),同时仍然能够仅通过一个命令来启动应用程序。 问题答案: 在脚本命令中设置环境变量: 然后在您的应用中使用。 注意:确保它可以跨平台工作。如果只关心Mac / Linux,则可以忽略它。