Proměnné v Dockerfilech

Introduction to Docker

Tim Sangster

Software Engineer @ DataCamp

Proměnné s instrukcí ARG

Vytvoření proměnné v Dockerfile

ARG <var_name>=<var_value>

Například ARG path=/home/repl

Použití v Dockerfile

$path

Například COPY /local/path $path

Introduction to Docker

Případy použití instrukce ARG

Nastavení verze Pythonu

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

Konfigurace složky

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

Nastavení proměnných ARG při sestavení

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

Nastavení proměnné v příkazu build

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

ARG je přepsán, soubory se ocitnou v:

COPY /local/project/files /repl/pipeline
COPY /local/project/test_files /repl/pipeline/tests
Introduction to Docker

Proměnné s instrukcí ENV

Vytvoření proměnné v Dockerfile

ENV <var_name>=<var_value>

Například ENV DB_USER=pipeline_user

Použití v Dockerfile nebo za běhu

$DB_USER

Například CMD psql -U $DB_USER

Introduction to Docker

Případy použití instrukce ENV

Nastavení adresáře používaného za běhu

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

Nastavení nebo přepsání proměnné za běhu

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
Introduction to Docker

Tajné hodnoty v proměnných nejsou bezpečné

docker history <image-name>

ARG DB_PASSWORD=example_password

Zobrazí se v docker history:

IMAGE          CREATED        CREATED BY                          SIZE      ...
cd338027297f   2 months ago   ARG DB_PASSWORD=example_password    0B        ...
Introduction to Docker

Shrnutí

Použití Instrukce Dockerfile
Vytvořit proměnnou dostupnou pouze během sestavení ARG <name>=<value>
Vytvořit proměnnou ENV <name>=<value>

Použití Příkaz shellu
Přepsat ARG při docker build docker build --build-arg <name>=<value>
Přepsat ENV při docker run docker run --env <name>=<value> <image-name>
Zobrazit instrukce použité k vytvoření image docker history <image-name>
Introduction to Docker

Lass uns üben!

Introduction to Docker

Preparing Video For Download...