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

Docker 是一个开源平台,它简化了在容器中创建、部署和管理应用程序。一个容器是一种可移植的、轻量级的、自包含的运行时环境,包含运行应用程序所需的一切。容器化的关键组成部分之一是管理环境

变量。环境变量是键值对,可用于配置容器运行时的行为。

1. 在 Dockerfile 中定义环境变量

Dockerfile 是一个包含如何构建 Docker 的指令的脚本。在 Dockerfile 中使用ENV 指令定义环境变量。

复制代码
FROM node:14
ENV NODE_ENV production
ENV API_KEY abcd1234

在本例中,我们设置了 NODE_ENVAPI_KEY,这些变量将在使用此 Dockerfile 构建的镜像创建的任何容器中都可用。

2. 在 docker 运行中设置环境变量

您还可以在启动容器时使用 docker run 命令设置环境变量。这里有一个例子:

复制代码
docker run -e NODE_ENV=development -e API_KEY=abcd1234 my-image:latest

在本例中,我们为 my-image:latest 创建的容器设置了 NODE_ENVAPI_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_ENVAPI_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']

我的开源项目

相关推荐
BduL OWED8 小时前
Docker:基于自制openjdk8镜像 or 官方openjdk8镜像,制作tomcat镜像
docker·容器·tomcat
.柒宇.8 小时前
AI掘金头条项目 Docker Compose 部署完整教程(附踩坑记录)
运维·后端·python·docker·容器·fastapi
运维全栈笔记21 小时前
K8S部署Redis高可用全攻略:1主2从3哨兵架构实战
redis·docker·云原生·容器·架构·kubernetes·bootstrap
SCBAiotAigc1 天前
2026.5.1:`DockerDesktop must be owned by an elevated account`错误的解决办法
人工智能·docker·具身智能
AI木马人1 天前
9.人工智能实战:GPU 服务如何上 Kubernetes?从单机部署到 K8s + NVIDIA Device Plugin + HPA 的生产级改造
人工智能·容器·kubernetes
身如柳絮随风扬1 天前
使用 Docker 部署禅道并实现自动化部署——从项目搭建到运维自动化的完整指南
运维·docker·自动化
eRTE XFUN1 天前
docker下搭建redis集群
redis·docker·容器
一只小bit1 天前
Docker 存储卷:本地文件与容器内部文件建立绑定关系
运维·docker·容器
都在酒里1 天前
在公共服务器上构建 RK3588 SDK 的纯净 Docker 方案
运维·服务器·docker
jeCA EURG1 天前
docker离线安装及部署各类中间件(x86系统架构)
docker·中间件·系统架构