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