Dockerfile'larda değişkenler

Docker'a Giriş

Tim Sangster

Software Engineer @ DataCamp

ARG talimatıyla değişkenler

Dockerfile'da değişken oluşturma

ARG <var_name>=<var_value>

Örnek: ARG path=/home/repl

Dockerfile içinde kullanma

$path

Örnek: COPY /local/path $path

Docker'a Giriş

ARG talimatı için kullanım alanları

Python sürümünü ayarlama

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

Bir klasörü yapılandırma

FROM ubuntu
ARG project_folder=/projects/pipeline_v3
COPY /local/project/files $project_folder
COPY /local/project/test_files $project_folder/tests
Docker'a Giriş

Build sırasında ARG değişkenlerini ayarlama

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

Build komutunda değişken ayarlama

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

ARG geçersiz kılınır ve dosyalar şuraya gider:

COPY /local/project/files /repl/pipeline
COPY /local/project/test_files /repl/pipeline/tests
Docker'a Giriş

ENV ile değişkenler

Dockerfile'da değişken oluşturma

ENV <var_name>=<var_value>

Örnek: ENV DB_USER=pipeline_user

Dockerfile içinde veya çalışma anında kullanma

$DB_USER

Örnek: CMD psql -U $DB_USER

Docker'a Giriş

ENV talimatı için kullanım alanları

Çalışma anında kullanılacak bir dizin ayarlama

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

Çalışma anında değişken ayarlama/değiştirme

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'a Giriş

Değişkenlerde gizler güvenli değildir

docker history <image-name>

ARG DB_PASSWORD=example_password

docker history çıktısında görünür:

IMAGE          CREATED        CREATED BY                          SIZE      ...
cd338027297f   2 months ago   ARG DB_PASSWORD=example_password    0B        ...
Docker'a Giriş

Özet

Kullanım Dockerfile Komutu
Yalnızca build sırasında erişilebilen değişken oluştur ARG <name>=<value>
Değişken oluştur ENV <name>=<value>

Kullanım Kabuk Komutu
docker build sırasında ARG'ı geçersiz kıl docker build --build-arg <name>=<value>
docker run sırasında ENV'yi geçersiz kıl docker run --env <name>=<value> <image-name>
Bir imajı oluşturmakta kullanılan talimatları gör docker history <image-name>
Docker'a Giriş

Hadi pratik yapalım!

Docker'a Giriş

Preparing Video For Download...