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

我可以在Dockerfile USER语句中使用环境变量吗?

田马鲁
2023-03-14
问题内容

所以我的Dockerfile是这样写的:

# set env vars for linux user
ENV LINUX_USER="kbuser"
...
... # other stuff
...
USER kbuser

但是我想用

USER $LINUX_USER

这样,我只需要在文件的一个位置写入用户名即可。但这是行不通的。

我该如何解决?

谢谢。


问题答案:

使用ARG指令。根据文档:

ARG <name>[=<default value>]

ARG指令定义了一个变量,用户可以在构建时使用docker build命令使用该--build-arg <varname>=<value>标志,将其传递给构建器。如果用户指定了未在Dockerfile中定义的构建参数,则构建会输出警告。

因此,您实际上可以ARG像这样使用:

ARG user=kbuser
USER $user

您实际上可以在构建docker映像时设置参数:

docker build --build-arg user=banana .

文档中还有更多内容,因此您最好彻底阅读。



 类似资料:
  • 问题内容: 我要求将所有属性文件存储在目录中。该目录的位置应存储在系统环境变量中。在我的应用程序上下文中,我将需要访问此环境变量以创建FileSystemResource Bean。这是我通常会有的示例: 相反,我需要让它像 其中prop文件的位置是环境变量。有人知道这样做的简单方法吗? 我正在使用Spring 2.5.6和Java 1.6 问题答案: 后来我们升级到了Spring 3.0.X,我

  • 问题内容: 我的操作系统是Windows7。我想在我的Java应用程序中读取环境变量。我已经搜索过google,很多人的答案是使用方法 或 。但这似乎不起作用。通过该方法,我可以读取JVM中定义的某些变量的值。 如果我设置一个名为“ Config”的环境变量,其值为“一些配置信息”,那么如何在Java中获取该值? 问题答案: 您应该使用System.getenv(),例如: 从IDE运行时,您可以

  • 问题内容: 我有一个Perl脚本,其中有一个类似的变量。我们可以将$ name的内容设置为可以导入其他文件并在其他文件中使用的环境变量吗? 我尝试过,但是这不起作用。 问题答案: 如果要影响您的进程或子进程的环境,请使用哈希: 如果要影响父进程的环境,则不会。至少没有父进程的合作。标准过程是发出shell脚本并让父进程执行该shell脚本: …并从shell(脚本)中调用该脚本为:

  • 我正在为我的项目运行多分支管道。 Jenkinsfile 的行为应根据触发器而变化。有两个事件触发管道 1。推送事件 2。拉取请求。 我试图检查环境变量'CHANGE_ID'('CHANGE_ID'将只适用于拉请求)。参考。 因此,如果pipeline由Push事件触发,并且如果检查“CHANGE_ID”变量,它会抛出异常(如果pipeline由Pull请求触发,代码会正常工作)。 代码: 错误:

  • 问题内容: 我一直在阅读官方文档,但无法找到有关环境变量的任何信息。显然,有一些社区项目支持环境变量,但这对我来说可能是过大了。所以我想知道在使用Vue CLI创建的项目上是否有一些简单的开箱即用的功能可以正常工作。 例如,我可以看到,如果执行以下操作,则会打印出正确的环境,这意味着已经设置好了吗? 我对环境变量和Node有点陌生。 仅供参考,使用Vue CLI 3.0 beta版。 问题答案:

  • 最佳实践最好在values.yaml文件中定义环境变量还是在templates/deployment.yaml放入中定义环境变量? 如果有您使用的示例应用程序,您能提供帮助吗?