Docker 是一个开源平台,它简化了在容器中创建、部署和管理应用程序。一个容器是一种可移植的、轻量级的、自包含的运行时环境,包含运行应用程序所需的一切。容器化的关键组成部分之一是管理环境 变量。环境变量是键值对,可用于配置容器运行时的行为。
1. 在 Dockerfile 中定义环境变量
Dockerfile 是一个包含如何构建 Docker 的指令的脚本。在 Dockerfile 中使用ENV 指令定义环境变量。
FROM node:14
ENV NODE_ENV production
ENV API_KEY abcd1234
在本例中,我们设置了 NODE_ENV 和 API_KEY,这些变量将在使用此 Dockerfile 构建的镜像创建的任何容器中都可用。
2. 在 docker 运行中设置环境变量
您还可以在启动容器时使用 docker run 命令设置环境变量。这里有一个例子:
docker run -e NODE_ENV=development -e API_KEY=abcd1234 my-image:latest
在本例中,我们为 my-image:latest 创建的容器设置了 NODE_ENV 和 API_KEY 环境变量,这些变量只能为这个特定的容器设置。
3. 在 Docker Compose 中使用环境变量
Docker Compose 是一个管理多容器 Docker 应用程序的强大工具,您可以在 docker-compose.yml 中定义环境变量。这里有一个例子:
version: "3"
services:
app:
image: my-image:latest
environment:
- NODE_ENV=production
- API_KEY=abcd1234
...
在本例中,我们设置 NODE_ENV 和 API_KEY 环境变量应用服务,这些变量将在所有为此创建的服务容器中可用。
4. 使用环境变量文件
您可以将环境变量存储在文件中,并在容器创建期间使用它。这对于管理敏感或复杂的信息非常有用 配置。创建一个名为 .env 的文件,包含以下内容:
NODE_ENV=production
API_KEY=abcd1234
要在启动容器时使用该文件,请在 docker run 命令中使用 -env-file 选项:
docker run --env-file .env my-image:latest
对于 Docker Compose,你可以在 docker-compose.yml 中指定环境文件。
version: "3"
services:
app:
image: my-image:latest
env_file: .env
...
5. 应用程序中访问环境变量
要在应用程序中访问环境变量,请使用适当的方法。
在 Node.js 中,可以这样访问 NODE_ENV 变量:
const nodeEnv = process.env.NODE_ENV;
在 Python 中,你可以使用 os 模块:
import os
node_env = os.environ['NODE_ENV']