Змінні у Dockerfile

Вступ до Docker

Tim Sangster

Software Engineer @ DataCamp

Змінні з інструкцією ARG

Створення змінних у Dockerfile

ARG <var_name>=<var_value>

Наприклад, ARG path=/home/repl

Використання в Dockerfile

$path

Наприклад, COPY /local/path $path

Вступ до Docker

Випадки використання інструкції ARG

Встановлення версії 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

Налаштування теки

FROM ubuntu
ARG project_folder=/projects/pipeline_v3
COPY /local/project/files $project_folder
COPY /local/project/test_files $project_folder/tests
Вступ до Docker

Встановлення ARG під час збірки

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

Задання змінної в команді збірки

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

ARG перезаписано, і файли потрапляють до:

COPY /local/project/files /repl/pipeline
COPY /local/project/test_files /repl/pipeline/tests
Вступ до Docker

Змінні з ENV

Створення змінних у Dockerfile

ENV <var_name>=<var_value>

Наприклад, ENV DB_USER=pipeline_user

Використання в Dockerfile або під час виконання

$DB_USER

Наприклад, CMD psql -U $DB_USER

Вступ до Docker

Випадки використання інструкції ENV

Налаштування теки для використання під час виконання

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

Встановлення або заміна змінної під час виконання

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
Вступ до Docker

Секрети в змінних не є захищеними

docker history <image-name>

ARG DB_PASSWORD=example_password

Буде показано в docker history:

IMAGE          CREATED        CREATED BY                          SIZE      ...
cd338027297f   2 months ago   ARG DB_PASSWORD=example_password    0B        ...
Вступ до Docker

Підсумок

Використання Інструкція Dockerfile
Створити змінну, доступну лише під час збірки ARG <name>=<value>
Створити змінну ENV <name>=<value>

Використання Команда оболонки
Перезаписати ARG у docker build docker build --build-arg <name>=<value>
Перезаписати ENV у docker run docker run --env <name>=<value> <image-name>
Переглянути інструкції, що створили образ docker history <image-name>
Вступ до Docker

Давайте потренуємось!

Вступ до Docker

Preparing Video For Download...