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