Variables dans les fichiers Dockerfile

Présentation de Docker

Tim Sangster

Software Engineer @ DataCamp

Variables avec l'instruction ARG

Créer des variables dans un fichier Dockerfile

ARG <var_name>=<var_value>

Par exemple ARG path=/home/repl

À utiliser dans le fichier Dockerfile

$path

Par exemple COPY /local/path $path

Présentation de Docker

Cas d'utilisation de l'instruction ARG

Définition de la version Python

FROM ubuntu
ARG python_version=3.9.7-1+bionic1
RUN apt-get install python3=$python_version
RUN apt-get install python3-dev=$python_version

Configuration d'un dossier

FROM ubuntu
ARG project_folder=/projects/pipeline_v3
COPY /local/project/files $project_folder
COPY /local/project/test_files $project_folder/tests
Présentation de Docker

Définition des variables ARG lors de la compilation

FROM ubuntu
ARG project_folder=/projects/pipeline_v3
COPY /local/project/files $project_folder
COPY /local/project/test_files $project_folder/tests

Définition d'une variable dans la commande build

docker build --build-arg project_folder=/repl/pipeline .

ARG est écrasé et les fichiers sont enregistrés dans :

COPY /local/project/files /repl/pipeline
COPY /local/project/test_files /repl/pipeline/tests
Présentation de Docker

Variables avec ENV

Créer des variables dans un fichier Dockerfile

ENV <var_name>=<var_value>

Par exemple ENV DB_USER=pipeline_user

À utiliser dans le fichier Dockerfile ou lors de l'exécution

$DB_USER

Par exemple CMD psql -U $DB_USER

Présentation de Docker

Cas d'utilisation de l'instruction ENV

Définition d'un répertoire à utiliser lors de l'exécution

ENV DATA_DIR=/usr/local/var/postgres
ENV MODE production

Définition ou remplacement d'une variable lors de l'exécution

docker run --env <key>=<value> <image-name>

docker run --env POSTGRES_USER=test_db --env POSTGRES_PASSWORD=test_db postgres

1 https://hub.docker.com/_/postgres
Présentation de Docker

Les secrets contenus dans les variables ne sont pas sécurisés

docker history <image-name>

ARG DB_PASSWORD=example_password

S’affichera dans docker history :

IMAGE          CREATED        CREATED BY                          SIZE      ...
cd338027297f   2 months ago   ARG DB_PASSWORD=example_password    0B        ...
Présentation de Docker

Récapitulatif

Utilisation Instruction Dockerfile
Créer une variable accessible uniquement pendant la compilation ARG <name>=<value>
Créer une variable ENV <name>=<value>

Utilisation Commande shell
Remplacer un ARG dans la build Docker docker build --build-arg <name>=<value>
Remplacer un ENV dans docker run docker run --env <name>=<value> <image-name>
Consulter les instructions utilisées pour créer une image docker history <image-name>
Présentation de Docker

Passons à la pratique !

Présentation de Docker

Preparing Video For Download...