Docker Build 传递环境变量的使用方法

在使用 Docker 部署应用程序时,我们常常需要在容器内部设置一些环境变量来配置应用程序的行为。Docker 提供了多种方式来传递环境变量,其中 docker build 命令是一种常用的方式。本文将介绍如何使用 docker build 命令传递环境变量,并通过代码示例详细说明。

什么是 Docker?

在深入了解 Docker Build 传递环境变量之前,让我们先了解一下 Docker 是什么。

Docker 是一种用于构建、打包和部署应用程序的开源平台。它使用容器化技术来实现应用程序的隔离和环境的一致性。通过 Docker,开发者可以将应用程序及其依赖项打包成一个可移植的容器,并在不同的环境中运行,而无需担心环境差异导致的问题。

Docker Build 命令

docker build 命令用于构建 Docker 镜像。它读取一个名为 Dockerfile 的文本文件,其中包含了一系列的指令和参数,用于构建镜像的过程。通过 docker build 命令,我们可以将我们的应用程序打包成一个镜像,并在不同的容器中运行。

Dockerfile

在使用 docker build 命令构建镜像时,我们需要提供一个 Dockerfile 文件。Dockerfile 是一个文本文件,其中包含了一系列的指令和参数,用于定义镜像的构建过程。

下面是一个简单的 Dockerfile 示例:

FROM ubuntu:latest
ENV MY_VAR my_value
RUN echo $MY_VAR

在上面的示例中,我们使用 FROM 指令指定了基础镜像为 ubuntu:latest。然后,使用 ENV 指令设置了一个名为 MY_VAR 的环境变量,并将其值设置为 my_value。最后,使用 RUN 指令执行了一个命令,输出了环境变量的值。

传递环境变量

为了在 Docker 镜像中传递环境变量,我们可以通过在 docker build 命令中使用 --build-arg 参数来传递。--build-arg 参数允许我们在构建镜像的过程中传递一个或多个键值对,这些键值对将会被作为构建过程中的环境变量。

下面是使用 --build-arg 参数传递环境变量的示例:

docker build --build-arg MY_VAR=my_value .

在上面的示例中,我们使用 --build-arg 参数将一个环境变量 MY_VAR 的值设置为 my_value

为了在 Dockerfile 中使用传递的环境变量,我们可以在 Dockerfile 中使用 ${MY_VAR} 的形式引用该环境变量。

下面是一个使用传递的环境变量的示例:

FROM ubuntu:latest
ARG MY_VAR
ENV MY_VAR=${MY_VAR}
RUN echo $MY_VAR

在上面的示例中,我们使用 ARG 指令定义了一个 MY_VAR 的参数,并在 ENV 指令中使用了该参数。这样,我们就可以在构建镜像的过程中通过 --build-arg 参数传递一个名为 MY_VAR 的环境变量。

完整示例

下面是一个完整的示例,演示了如何使用 docker build 命令传递环境变量。

文件结构

首先,我们需要创建一个文件夹,并在该文件夹中创建一个 Dockerfile 和一个简单的应用程序文件。

└── myapp
    ├── Dockerfile
    └── main.py

Dockerfile

FROM python:3.9

# 传递环境变量
ARG MY_VAR
ENV MY_VAR