Variabile în Dockerfile-uri

Introducere în Docker

Tim Sangster

Software Engineer @ DataCamp

Variabile cu instrucțiunea ARG

Crearea variabilelor într-un Dockerfile

ARG <var_name>=<var_value>

De exemplu ARG path=/home/repl

Utilizare în Dockerfile

$path

De exemplu COPY /local/path $path

Introducere în Docker

Cazuri de utilizare pentru instrucțiunea ARG

Setarea versiunii 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

Configurarea unui folder

FROM ubuntu
ARG project_folder=/projects/pipeline_v3
COPY /local/project/files $project_folder
COPY /local/project/test_files $project_folder/tests
Introducere în Docker

Setarea variabilelor ARG la momentul build-ului

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

Setarea unei variabile în comanda de build

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

ARG este suprascris, iar fișierele ajung în:

COPY /local/project/files /repl/pipeline
COPY /local/project/test_files /repl/pipeline/tests
Introducere în Docker

Variabile cu ENV

Crearea variabilelor într-un Dockerfile

ENV <var_name>=<var_value>

De exemplu ENV DB_USER=pipeline_user

Utilizare în Dockerfile sau la runtime

$DB_USER

De exemplu CMD psql -U $DB_USER

Introducere în Docker

Cazuri de utilizare pentru instrucțiunea ENV

Setarea unui director utilizat la runtime

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

Setarea sau înlocuirea unei variabile la runtime

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
Introducere în Docker

Secretele din variabile nu sunt securizate

docker history <image-name>

ARG DB_PASSWORD=example_password

Va apărea în docker history:

IMAGE          CREATED        CREATED BY                          SIZE      ...
cd338027297f   2 months ago   ARG DB_PASSWORD=example_password    0B        ...
Introducere în Docker

Rezumat

Utilizare Instrucțiune Dockerfile
Creare variabilă accesibilă doar la build ARG <name>=<value>
Creare variabilă ENV <name>=<value>

Utilizare Comandă Shell
Suprascriere ARG la docker build docker build --build-arg <name>=<value>
Suprascriere ENV la docker run docker run --env <name>=<value> <image-name>
Vizualizare instrucțiuni pentru crearea unei imagini docker history <image-name>
Introducere în Docker

Să exersăm!

Introducere în Docker

Preparing Video For Download...