网站建设投标ppt模板下载,北京做网站建设,广西南宁建设银行最新招聘网站,企业取名字一、说明 程序通常通过与软件捆绑在一起的配置来控制操作#xff0c;环境变量允许用户在运行时设置它们。但是#xff0c;在 Docker 容器中运行进程会使事情变得复杂#xff0c;那么如何将环境变量传递给容器呢#xff1f;下面介绍若干个传递办法。 二、环境变量有何用途 环…一、说明 程序通常通过与软件捆绑在一起的配置来控制操作环境变量允许用户在运行时设置它们。但是在 Docker 容器中运行进程会使事情变得复杂那么如何将环境变量传递给容器呢下面介绍若干个传递办法。 二、环境变量有何用途 环境变量允许您将配置与应用程序的可执行文件分离。例如您不想将生产数据库密码存储在您的代码库中——如果您这样做了它会从 Git 中可见并且任何有权访问您的代码的人都可以关闭您的数据库。 相反您使用一个环境变量来设置它该变量存储一个简单的键值对并允许您访问在同一 shell 会话中运行的任何应用程序中的值它们不是全局可访问的。这还有一个好处就是能够轻松地为不同的环境定义不同的配置。例如为开发和生产数据库使用单独的密钥或使用不同的 API 端点。 可以通过三种主要方式为 Docker 容器设置这些变量——使用 CLI 参数、.env 配置文件或通过 docker-compose。 三、参数随着启动命令带入 用于启动 Docker 容器的命令 docker run 接受 ENV 变量作为参数。只需使用 -e 标志--env 的简写运行它并传入 keyvalue 对
sudo docker run
-e POSTGRES_USERpostgres
-e POSTGRES_PASSWORDpassword
... 而且如果您已经在运行该命令的环境中设置了这些环境变量则可以直接按名称传递它们 // set variablePOSTGRES_PASSWORDpassword// use it laterdocker run -e POSTGRES_PASSWORD -e POSTGRES_USER ...
四、参数在.env 文件 使用 CLI 参数传递变量效果很好但它有一个缺点——这些变量在主机上是可见的。它们记录在命令历史记录中并在已启动进程的进程列表中可见。 Linux 有一个内置的方法来管理这个权限——文件访问。将变量存储在 .env 文件中允许您使用文件权限chmod、chown控制对该文件的访问。 使用以下格式的变量创建一个 .env 文件每个变量占一行 POSTGRES_PASSWORDpasswordPOSTGRES_USERpostgresAPPLICATION_URLexample.com 然后使用 --env-file 标志将其传递给 docker run docker run --env-file ./envfile ...
五、参数随Docker-Compose启动带入 当然许多人不会直接使用 docker run 启动 Docker 容器而是选择使用 docker-compose 文件来处理代表单个应用程序的多个容器的配置。 要将环境变量传递给以这种方式启动的容器您必须配置组合文件以将会话变量传递给 Docker 容器。这里的这个配置将POSTGRES_USER变量传递给构建环境和运行环境如果不存在则设置一个默认值。
version: 3.1
services:my-service: build:context: .args:- POSTGRES_USER${POSTGRES_USER:-default}environment: - POSTGRES_USER${POSTGRES_USER:-default} 您需要在运行 docker-compose up 之前设置环境变量否则将无法访问它们。您可以将它们存储在撰写文件中但这通常会被跟踪和版本化这违背了环境变量的目的。
六、随Kubernetes带入 Kubernetes 是一个编排系统可以处理跨网络运行数百个容器。它仍然使用 Docker但你只会接触配置因此直接传递环境变量是行不通的。 相反您可以在 Pod 的配置中定义它们
apiVersion: v1
kind: Pod
metadata:name: example
spec:containers:- ...env:- name: SERVICE_PORTvalue: 80- name: SERVICE_IPvalue: 172.17.0.1 Kubernetes 很复杂有很多不同的方式来处理环境变量。要了解更多信息您可以阅读他们关于将数据注入 Pod 的指南。