Zmienne w plikach Dockerfile

Wprowadzenie do Dockera

Tim Sangster

Software Engineer @ DataCamp

Zmienne z instrukcją ARG

Tworzenie zmiennych w pliku Dockerfile

ARG <var_name>=<var_value>

Na przykład: ARG path=/home/repl

Użycie w pliku Dockerfile

$path

Na przykład: COPY /local/path $path

Wprowadzenie do Dockera

Przypadki użycia instrukcji ARG

Ustawianie wersji Pythona

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

Konfigurowanie folderu

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

Ustawianie zmiennych ARG podczas budowania

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

Ustawianie zmiennej w poleceniu build

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

ARG zostaje nadpisane, a pliki trafiają do:

COPY /local/project/files /repl/pipeline
COPY /local/project/test_files /repl/pipeline/tests
Wprowadzenie do Dockera

Zmienne z instrukcją ENV

Tworzenie zmiennych w pliku Dockerfile

ENV <var_name>=<var_value>

Na przykład: ENV DB_USER=pipeline_user

Użycie w pliku Dockerfile lub w czasie wykonywania

$DB_USER

Na przykład: CMD psql -U $DB_USER

Wprowadzenie do Dockera

Przypadki użycia instrukcji ENV

Ustawianie katalogu używanego w czasie wykonywania

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

Ustawianie lub nadpisywanie zmiennej w czasie wykonywania

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
Wprowadzenie do Dockera

Sekrety w zmiennych nie są bezpieczne

docker history <image-name>

ARG DB_PASSWORD=example_password

Będzie widoczne w docker history:

IMAGE          CREATED        CREATED BY                          SIZE      ...
cd338027297f   2 months ago   ARG DB_PASSWORD=example_password    0B        ...
Wprowadzenie do Dockera

Podsumowanie

Zastosowanie Instrukcja Dockerfile
Tworzenie zmiennej dostępnej tylko podczas budowania ARG <name>=<value>
Tworzenie zmiennej ENV <name>=<value>

Zastosowanie Polecenie powłoki
Nadpisanie ARG podczas docker build docker build --build-arg <name>=<value>
Nadpisanie ENV podczas docker run docker run --env <name>=<value> <image-name>
Wyświetlenie instrukcji użytych do utworzenia obrazu docker history <image-name>
Wprowadzenie do Dockera

Czas na ćwiczenia!

Wprowadzenie do Dockera

Preparing Video For Download...