如何在 Docker 镜像中添加环境变量

Docker 是一个开放源代码的平台,它可以帮助开发者打包、发布和运行应用程序。对于许多应用程序来说,添加环境变量是一个常见的需求。本文将手把手教你如何在 Docker 镜像中添加环境变量。我们将通过一个清晰的流程和实例代码,让你轻松上手。

整体流程

在我们开始之前,先来看看实现这一功能的基本步骤:

步骤 描述
1 编写 Dockerfile
2 使用 ENV 指令添加环境变量
3 构建 Docker 镜像
4 运行 Docker 容器并验证环境变量

每一步详解

步骤 1: 编写 Dockerfile

首先,我们需要一个 Dockerfile,这是用来定义我们的应用环境的配置文件。假设我们要创建一个简单的 Node.js 应用。

创建文件 Dockerfile,内容如下:

# 使用官方 Node.js 镜像作为基础镜像
FROM node:14

# 设置工作目录
WORKDIR /usr/src/app

# 复制 package.json 和 package-lock.json 文件
COPY package*.json ./

# 安装依赖
RUN npm install

# 复制应用源代码
COPY . .

# 暴露端口
EXPOSE 8080

# 设置容器启动时的命令
CMD [ "node", "app.js" ]

在上面的示例中,我们使用了官方的 Node.js 镜像,并设置了一个工作目录 WORKDIR

步骤 2: 添加环境变量

在 Dockerfile 中,我们可以使用 ENV 指令来设置所需的环境变量。例如,我们要在 Docker 容器内设置一个名为 APP_ENV 的环境变量。

更新 Dockerfile,添加如下内容:

# 设置环境变量
ENV APP_ENV=production

完整的 Dockerfile 现在如下:

# 使用官方 Node.js 镜像作为基础镜像
FROM node:14

# 设置工作目录
WORKDIR /usr/src/app

# 复制 package.json 和 package-lock.json 文件
COPY package*.json ./

# 安装依赖
RUN npm install

# 复制应用源代码
COPY . .

# 设置环境变量
ENV APP_ENV=production

# 暴露端口
EXPOSE 8080

# 设置容器启动时的命令
CMD [ "node", "app.js" ]

使用 ENV 指令后,我们在容器启动时,就能访问 APP_ENV 这个环境变量。

步骤 3: 构建 Docker 镜像

现在,我们需要构建 Docker 镜像。在终端中,导航到 Dockerfile 所在的目录,然后执行以下命令:

# 构建镜像:-t 用于指定镜像名称
docker build -t my-node-app .

命令中的 my-node-app 是我们新创建镜像的名称。

步骤 4: 运行 Docker 容器并验证环境变量

构建完成后,我们可以运行容器并验证环境变量是否正确设置。使用以下命令启动容器:

# 运行容器并进入交互模式
docker run -it --rm my-node-app /bin/sh

上述命令会启动一个容器,并进入到它的shell中。

在容器内,可以通过以下命令来验证环境变量:

# 打印环境变量
echo $APP_ENV

如果输出为 production,说明环境变量设置成功!

序列图

以下是一个简单的序列图,展示了 Docker 镜像添加环境变量的过程:

sequenceDiagram
    participant Developer as 开发者
    participant Dockerfile as Dockerfile
    participant Docker as Docker

    Developer->>Dockerfile: 编写 Dockerfile
    Dockerfile->>Docker: 添加 ENV 指令设置环境变量
    Developer->>Docker: 运行 docker build
    Docker->>Docker: 构建出新的镜像
    Developer->>Docker: 运行 docker run
    Docker->>Developer: 启动容器并返回终端
    Developer->>Docker: 验证环境变量
    Docker-->>Developer: 输出环境变量值

总结

本文介绍了如何在 Docker 镜像中添加环境变量的详细步骤。我们从编写 Dockerfile 到添加环境变量,再到构建和验证镜像,每一步都进行了详细说明。使用 Docker 的 ENV 指令,我们可以轻松地在容器中管理环境变量,从而让应用程序的配置更为灵活。现在,您应该能够独立进行 Docker 镜像的构建与环境变量的管理,祝您在学习 Docker 的道路上取得更多的进展!