6.1 Mühit dəyişənlərinin əsasları
Mühit dəyişənləri tətbiqlərin konfiqurasiyasında mühüm rol oynayır, kodu dəyişmədən servislərin davranışını və parametrlərini dinamik olaraq dəyişməyə imkan verir. Docker Compose mühit dəyişənlərindən konteynerlərin tənzimlənməsi üçün istifadəni dəstəkləyir, bu isə konfiqurasiya idarəçiliyində elastiklik və rahatlıq təmin edir.
Mühit dəyişənlərini idarə etməyin ən rahat yollarından biri .env
fayllarından istifadədir. Bu mühazirədə biz Docker Compose-də mühit dəyişənlərindən necə istifadə ediləcəyini, o cümlədən .env
fayllarının yaradılması və istifadəsini ətraflı öyrənəcəyik.
Docker Compose-də mühit dəyişənlərinin əsasları
Mühit dəyişənlərindən docker-compose.yml
faylında konfiqurasiyaların parametrləşdirilməsi üçün istifadə edilə bilər. Bu dəyişənlər .env
faylında, birbaşa docker-compose.yml
faylında müəyyən edilə bilər və ya komanda xətti vasitəsilə ötürülə bilər.
Docker Compose-də docker-compose.yml
faylında mühit dəyişənlərinin istifadəsinə nümunə:
Bu nümunədə NGINX_VERSION
və HOST_PORT
dəyişənlərindən istifadə edilir, onların dəyərləri .env
faylında və ya komanda xətti vasitəsilə təyin edilə bilər.
version: '3.8'
services:
web:
image: nginx:${NGINX_VERSION}
ports:
- "${HOST_PORT}:80"
6.2 .env
fayllarından istifadə
1. .env
faylının yaradılması
.env
faylı docker-compose.yml
-in yerləşdiyi eyni qovluqda saxlanılır və "açar-dəyər" cütlərindən ibarətdir. Bu cütlər mühit dəyişənlərinin dəyərlərini təyin edir. Hər bir dəyişən yeni sətirdə göstərilir.
.env
faylının nümunəsi:
NGINX_VERSION=latest
HOST_PORT=8080
DB_USER=admin
DB_PASSWORD=secret
2. .env
faylının Docker Compose ilə inteqrasiyası
Əgər .env
faylı docker-compose.yml
-in yerləşdiyi eyni qovluqdadırsa, Docker Compose avtomatik olaraq dəyişənləri həmin fayldan yükləyir.
Mühit dəyişənlərindən istifadə edən docker-compose.yml
faylının nümunəsi:
Bu nümunədə NGINX_VERSION
, HOST_PORT
, DB_USER
və DB_PASSWORD
dəyişənləri .env
faylından götürülür.
version: '3.8'
services:
web:
image: nginx:${NGINX_VERSION}
ports:
- "${HOST_PORT}:80"
db:
image: postgres:latest
environment:
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
6.3 Dəyişənlərin ötürülməsi
Dəyişənlərin komand satırı vasitəsilə ötürülməsi
Ətraf mühit dəyişənlərini birbaşa komand satırı vasitəsilə də ötürə bilərsiniz, Unix oxşar sistemlərində export
komandası və ya --env-file
parametrlərini istifadə etməklə.
export
istifadəsinə nümunə:
export NGINX_VERSION=latest
export HOST_PORT=8080
docker compose up
--env-file
istifadəsinə nümunə:
Ətraf mühit dəyişənlərinin saxlandığı alternativ faylı göstərmək üçün --env-file
parametrindən istifadə edə bilərsiniz.
docker compose --env-file .env.dev up
Docker Compose-də daxili ətraf mühit dəyişənlərindən istifadə
Docker Compose həmçinin ${PWD}
kimi, hazırda fəaliyyət göstərən işçi qovluğu kimi daxili ətraf mühit dəyişənlərini dəstəkləyir.
Nümunə:
version: '3.8'
services:
app:
image: myapp:latest
volumes:
- ${PWD}/app:/app
6.4 Praktiki Nümunələr
Ətraf mühit dəyişənlərindən istifadə üzrə praktiki nümunələr
Nümunə 1: Veb-server və verilənlər bazasının sazlanması
.env
faylı yaradın və veb-server və verilənlər bazası üçün parametrləri daxil edin:
NGINX_VERSION=1.19.3
HOST_PORT=8080
DB_USER=myuser
DB_PASSWORD=mypassword
Bu dəyişənlərdən istifadə edən docker-compose.yml faylı yaradın:
version: '3.8'
services:
web:
image: nginx:${NGINX_VERSION}
ports:
- "${HOST_PORT}:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
db:
image: postgres:latest
environment:
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres-data:/var/lib/postgresql/data
volumes:
postgres-data:
Docker Compose işə salın:
docker compose up
Nümunə 2: İnkişaf və istehsal mühitlərinin ayrılması
Fərqli mühitlər üçün iki .env
faylı yaradın: .env.dev
və .env.prod
.
.env.dev
faylı:
NGINX_VERSION=latest
HOST_PORT=8080
DB_USER=devuser
DB_PASSWORD=devpassword
.env.prod
faylı:
NGINX_VERSION=1.19.3
HOST_PORT=80
DB_USER=produser
DB_PASSWORD=prodpassword
Bu fayllardakı dəyişənlərdən istifadə edən bir docker-compose.yml
faylı yaradın:
version: '3.8'
services:
web:
image: nginx:${NGINX_VERSION}
ports:
- "${HOST_PORT}:80"
db:
image: postgres:latest
environment:
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres-data:/var/lib/postgresql/data
volumes:
postgres-data:
İnkişaf mühiti üçün Docker Compose işə salın:
docker compose --env-file .env.dev up
İstehsal mühiti üçün Docker Compose işə salın:
docker compose --env-file .env.prod up
GO TO FULL VERSION