带有多个参数的 Docker 构建命令

Isaac Tony 2022年4月20日
带有多个参数的 Docker 构建命令

docker build 命令允许我们从 Dockerfile 创建 Docker 映像。它还允许我们从引用一组文件的上下文构建镜像,这些文件位于 PATH 或 URL 指定的位置。

另一方面,Dockerfile 只是一个只读文本文档,其中包含在组装我们的 Docker 映像时将调用的指令。Docker 映像是我们用来构建 Docker 容器的指令集、应用程序代码、依赖项、工具和库。

本教程演示了如何使用 docker build 命令和多个参数。

带有多个参数的 docker build 命令

docker build 命令通常在终端或命令行中执行。

语法:

docker build [options] <directory path or URL>

PATH 或 URL 是指上下文中的一组文件,其中可能包括资源,例如预打包的 tarball 上下文、纯文本文件,甚至是 git 存储库。如果所有文件都存储在本地目录中,即与 Dockerfile 相同的目录,我们可以选择使用 . 作为路径。

此路径指定用于 docker 守护程序上的构建上下文的文件。

docker build .

我们可以在构建期间在 options 参数下传递多个参数。使用 –build-arg 标签,我们可以设置用户可以在构建时设置的值。

然而,我们首先需要在我们的 Dockerfile 中定义一个 ARG 指令,然后再使用 --build-arg 标签来构建镜像。我们可以像访问常规环境变量一样访问这个构建时变量;但是,它们在构建映像后不会持续存在。

虽然 ARG 指令的范围有限,但可以在指定基本映像之前声明它。我们还可以通过使用单独的 --build-arg 标签分别传递每个参数来传递多个构建参数。

语法:

docker build -t <image-name>:<tag> --build-arg <key1>=<value1> --build-arg <key2>=<value2> .

我们有一个简单的 Dockerfile,它在以下示例中定义了一些 ARG 值。在这种情况下,我们没有设置它们的默认值。

Docker 文件如下所示。

#  base image
FROM python

ARG language
ARG name
# Set your working directory
WORKDIR /var/www/

# Copy the necessary files
COPY ./app.py /var/www/app.py

# Install the necessary packages
RUN pip install -r /var/www/requirements.txt

RUN echo "Hello $language Developer"
MAINTAINER Isaac Tonyloi

因此,我们应该在构建镜像时使用 -build-arg 标签传递值。

~/my-app$ docker build --build-arg language=Java .

使用上面的命令构建镜像将在其他文件旁边打印消息 Hello Java Developer,如下所示。

                                                                                                           0.0s
 => [5/6] RUN pip install -r /var/www/requirements.txt                                                                                                                      100.4s
 => [6/6] RUN echo "Hello Java Developer"                                                                                                                                     4.4s
 => exporting to image                                                                                                                                                        3.8s
 => => exporting layers                                                                                                                                                       2.8s
 => => writing image sha256:22fa358b711d2ea3a1d72e59f062f6c7c38b414bdb253fb8d0def20222cadd93

我们还可以使用多个 --build-arg 标签将 docker build 与多个命令一起使用。

/my-app$ docker build \
> --build-arg language=Java \
> --build-arg name=Tonyloi \
> .

这将在下方和其他消息旁边打印消息。虽然这是非常基本的,但这是在从 Dockerfile 构建 Docker 映像时传递多个命令的方式。

输出:

 => [2/2] RUN echo "Hello Java Developer and my name is Tonyloi"                                                                                                              3.3s
 => exporting to image                                                                                                                                                        3.0s
 => => exporting layers                                                                                                                                                       2.0s
 => => writing image sha256:d4d7c3b18aa9422be2990f5381a5423a18867dda8090dd4a4f166efc4e7c4ba2
Author: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn

相关文章 - Docker Command