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

将主机环境变量传递给dockerfile

况胡媚
2023-03-14
问题内容

如何将主机环境变量(例如用户名和主机名)传递给dockerfile?

例如,如果我的用户名是taha

echo $USER
taha

如何编写Docker文件以获得相同的输出?

FROM centos:centos7   
ARG myuser=$USER  
CMD echo $myuser

问题答案:

我遇到了同样的问题。我的解决方案是在docker-compose.yml内部提供变量,因为yml支持使用环境变量。

我认为这对我来说是最有效的方式,因为我不喜欢在命令行中使用类似以下内容一遍又一遍地键入它 docker run -e myuser=$USER . . .

ENV myuser=$USER在容器中,声明将无效,$myuser将设置为null

因此,您的docker-compose.yml可能看起来像这样:

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    environment:
       - "myuser=${USER}"

并可以使用short命令运行 docker-compose up

要检查是否已应用变量,请运行docker exec -it container-name printenv以列出容器中的所有变量。



 类似资料:
  • 我正在使用GAE部署我的应用程序,我想把一些环境变量传递给我的GAE实例。例如,每次我使用DB时,分配当前是这样的: 这很好,但问题是它是一个共享代码,每次有人进行本地测试时,它都会更改路径,并将更改推送到存储库。当有人拉动新的更改时,它需要更改以发出db请求,因为每个人都有不同的套接字更改路径。因此,我创建了以下声明: 因此,如果某个人的系统中有一个环境变量,那么它会接受该变量并避免绝对路径。问

  • 我正在尝试将服务器URL传递给在Docker容器中运行的React应用程序。它在应用程序中发送HTTP请求时使用,访问方式如下:server_url。这在主机上存储为en环境变量。 我尝试过直接在我的does文件中设置变量:< code > ENV server _ URL = $ { server _ URL } ,我认为这不起作用,因为< code>${server_url}是针对does文件

  • 问题内容: 我是Docker的新手,目前尚不清楚如何从容器访问外部数据库。硬编码连接字符串的最佳方法是吗? 问题答案: 您可以使用该标志将环境变量传递到您的容器。 启动脚本的示例: 或者,如果您不希望在命令行中使用,等显示该值,则可以直接从当前环境中获取该值,如果您不带: 如果您有许多环境变量,尤其是要保密的话,可以使用env文件: --env-file标志将文件名作为参数,并期望每行采用VAR

  • 我是Docker的新手,不清楚如何从容器访问外部数据库。是在连接字符串中硬编码的最佳方法吗?

  • 问题内容: 我必须从本地文件夹中的文件中读取一些属性。我需要在命令行中提供此文件路径。我给了它如下所述。但是有一个错误,它显示为 给出的命令是 有人可以帮我解决这个问题吗? 谢谢 问题答案: 尝试给出以下命令,

  • 我是第一次和docker合作,我正在努力弄清楚这一切。 在我正在进行的这个项目中,我们在启动文件中广泛使用了Windows环境变量。为了将这些内容放入配置中,我们使用AddEnvironmentVariables(string prefix)方法,如下所示: 在localhost和Azure中,这是没有问题的,因为我们已经将它们添加到了这些环境中。但是我不能想出如何在我的docker容器中配置这些