如何在 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']

我的开源项目

相关推荐
源图客2 小时前
【AI向量数据库】Weaviate介绍与部署
运维·docker·容器
一勺菠萝丶4 小时前
宝塔 Docker 安装 Ubuntu 及启动失败解决流程
ubuntu·docker·eureka
码云骑士5 小时前
28-Docker部署Django(下)-docker-compose编排与静态文件处理
docker·容器·django
至乐活着6 小时前
Docker Compose多服务编排实战:从零搭建Node.js+MySQL+Redis全栈应用
docker·微服务·devops·容器编排·compose
木雷坞6 小时前
Firecrawl Docker Compose 自托管排查:镜像、Redis、队列和 Playwright
redis·docker·容器·firecrawl
whyfail7 小时前
Colima:把 Docker Desktop 从 Mac 上“瘦身”的那把刀
macos·docker·容器
人工智能培训8 小时前
数字孪生的未来发展方向探析
gpt·深度学习·机器学习·容器·知识图谱
大佐不会说日语~8 小时前
在 Windows 本地用 Docker 部署向量模型(bge-m3)
windows·docker·容器·llm·ollama
xsc-xyc9 小时前
CasaOS + Docker 挂载外接硬盘部署 Jellyfin 私人影院
运维·docker·容器
码云骑士9 小时前
27-Docker部署Django(上)-从2GB到180MB的镜像瘦身实战
docker·容器·django