如何在 Docker 中设置环境变量 ?

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']

我的开源项目

相关推荐
YYYing.1 天前
【K8s系列 (一) 】Docker与容器(上篇)
docker·云原生·容器·kubernetes
csdn_aspnet1 天前
使用 Docker 和 RedisInsight 设置 Redis 以进行本地开发
redis·docker·容器·redisinsight
余槐i1 天前
MySQL 8.0 联合索引走错:为什么加了索引查询反而从 200ms 变成 8s
java·spring boot·mysql·docker·性能优化
csdn_aspnet1 天前
如何在本地 Docker 容器中运行 Redis,并使用 Redis Insight 和 Redis CLI 进行管理
redis·docker·容器
且从容.1 天前
Ubuntu 安装 Docker
linux·ubuntu·docker
todoitbo1 天前
我在 Mac 上用 Docker 部署 Nexent:从拉取镜像到接入模型
macos·docker·大模型·ai智能体·nexent·快速入门与环境准备
Goboy1 天前
夯爆了,我被一个一句话接入的免费可观测平台策反了,那一刻我决定放弃用了3年的Prometheus
后端·docker·kubernetes
吴声子夜歌1 天前
Kubernetes权威指南——深入掌握Service(一)
云原生·容器·kubernetes
java_logo2 天前
Docker 部署 Liquibase:轻松搭建数据库变更管理
数据库·docker·容器·数据库管理·liquibase·轩辕镜像·数据库变更
IT利刃出鞘2 天前
Docker Compose--解决修改配置后不生效的问题
运维·docker·容器