Commande Docker Build avec plusieurs arguments
La commande docker build
permet de créer des images Docker à partir d’un Dockerfile. Cela nous permet également de construire une image à partir d’un contexte faisant référence à un ensemble de fichiers situés dans un emplacement spécifié par un PATH ou une URL.
D’autre part, un Dockerfile est simplement un document texte en lecture seule avec des instructions qui seront appelées lors de l’assemblage de notre image Docker. Une image Docker est un jeu d’instructions, un code d’application, des dépendances, des outils et des bibliothèques que nous utilisons pour créer un conteneur Docker.
Ce tutoriel montre comment utiliser la commande docker build
et plusieurs arguments.
la commande docker build
avec plusieurs arguments
La commande docker build
est généralement exécutée dans le terminal ou la ligne de commande.
Syntaxe:
docker build [options] <directory path or URL>
Le PATH ou l’URL fait référence à un ensemble de fichiers dans un contexte qui peut inclure des ressources telles qu’un contexte tarball pré-emballé, des fichiers en texte brut ou même un référentiel git. Si tous les fichiers sont stockés dans le répertoire local, c’est-à-dire le même répertoire que le Dockerfile, nous pouvons choisir d’utiliser .
comme chemin.
Ce chemin spécifie les fichiers utilisés pour le contexte de construction sur le démon docker.
docker build .
Nous pouvons passer plusieurs arguments pendant la construction sous le paramètre options. À l’aide de la balise –build-arg
, nous pouvons définir des valeurs que les utilisateurs peuvent définir au moment de la construction.
Cependant, nous devons d’abord définir une instruction ARG
dans notre Dockerfile avant d’utiliser la balise --build-arg
pour construire l’image. Nous pouvons accéder à cette variable de temps de construction comme des variables d’environnement normales ; cependant, ils ne persistent pas après la création de l’image.
Bien que la portée des instructions ARG soit limitée, elle peut être déclarée avant de spécifier l’image de base. Nous pouvons également passer plusieurs arguments de construction en passant séparément chaque argument avec une balise --build-arg
distincte.
Syntaxe:
docker build -t <image-name>:<tag> --build-arg <key1>=<value1> --build-arg <key2>=<value2> .
Nous avons un Dockerfile simple qui définit certaines valeurs ARG
dans l’exemple suivant. Dans ce cas, nous n’avons pas défini leurs valeurs par défaut.
Le fichier Docker se présente comme indiqué ci-dessous.
# 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
Par conséquent, nous devrons transmettre les valeurs à l’aide des balises -build-arg
lors de la construction de l’image.
~/my-app$ docker build --build-arg language=Java .
La création d’une image à l’aide de la commande ci-dessus imprimera le message Hello Java Developer
à côté d’autres fichiers, comme indiqué ci-dessous.
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
Nous pouvons également utiliser docker build
avec plusieurs commandes utilisant plusieurs balises --build-arg
.
/my-app$ docker build \
> --build-arg language=Java \
> --build-arg name=Tonyloi \
> .
Cela imprime le message ci-dessous et à côté d’autres messages. Bien que ce soit très basique, c’est ainsi que vous pouvez passer plusieurs commandes lors de la création d’une image Docker à partir d’un Dockerfile.
Production:
=> [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