Variablen in Dockerfiles

Einführung in Docker

Tim Sangster

Software Engineer @ DataCamp

Variablen mit der ARG-Anweisung

Variablen in einem Dockerfile erstellen

ARG <var_name>=<var_value>

Zum Beispiel:ARG path=/home/repl

Zur Verwendung im Dockerfile

$path

Zum Beispiel:COPY /local/path $path

Einführung in Docker

Anwendungsfälle für die ARG-Anweisung

Die Python-Version festlegen

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

Einen Ordner konfigurieren

FROM ubuntu
ARG project_folder=/projects/pipeline_v3
COPY /local/project/files $project_folder
COPY /local/project/test_files $project_folder/tests
Einführung in Docker

ARG-Variablen beim Erstellen festlegen

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

Eine Variable im Build-Befehl festlegen

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

ARG wird überschrieben, und die Dateien landen in:

COPY /local/project/files /repl/pipeline
COPY /local/project/test_files /repl/pipeline/tests
Einführung in Docker

Variablen mit ENV

Variablen in einem Dockerfile erstellen

ENV <var_name>=<var_value>

Zum Beispiel:ENV DB_USER=pipeline_user

Zur Verwendung im Dockerfile oder zur Laufzeit

$DB_USER

Zum Beispiel:CMD psql -U $DB_USER

Einführung in Docker

Anwendungsfälle für die ENV-Anweisung

Ein Verzeichnis festlegen, das zur Laufzeit benutzt werden soll

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

Eine Variable zur Laufzeit festlegen oder ersetzen

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
Einführung in Docker

Sensible Informationen in Variablen sind nicht sicher

docker history <image-name>

ARG DB_PASSWORD=example_password

Wird angezeigt in docker history:

IMAGE          CREATED        CREATED BY                          SIZE      ...
cd338027297f   2 months ago   ARG DB_PASSWORD=example_password    0B        ...
Einführung in Docker

Zusammenfassung

Verwendung Dockerfile-Anweisung
Variable erstellen, auf die nur während des Builds zugegriffen werden kann ARG <name>=<value>
Variable erstellen ENV <name>=<value>

Verwendung Shell-Befehl
ARG bei Docker-Build überschreiben docker build --build-arg <name>=<value>
ENV bei Docker-Run überschreiben docker run --env <name>=<value> <image-name>
Anweisungen zum Erstellen eines Images ansehen. docker history <image-name>
Einführung in Docker

Lass uns üben!

Einführung in Docker

Preparing Video For Download...