CodeGym /Kurslar /Docker SELF /Docker Compose-da mühit dəyişənləri

Docker Compose-da mühit dəyişənləri

Docker SELF
Səviyyə , Dərs
Mövcuddur

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_VERSIONHOST_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.

Yaml

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:

.env

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_USERDB_PASSWORD dəyişənləri .env faylından götürülür.

Yaml

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ə:

Terminal


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.

Terminal


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ə:

Yaml

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:

.env

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:

Yaml

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:

Terminal


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.env.prod.

.env.dev faylı:

.env

NGINX_VERSION=latest
HOST_PORT=8080
DB_USER=devuser
DB_PASSWORD=devpassword

.env.prod faylı:

.env

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:

Yaml

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:

Terminal


docker compose --env-file .env.dev up

İstehsal mühiti üçün Docker Compose işə salın:

Terminal

        
docker compose --env-file .env.prod up
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION