帶有多個引數的 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
作者: 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