4.1 docker build komandasının əsasları
docker build komandası Dockerfile-dən Docker image-ləri yaratmaq üçün əsas alətdir. O, Dockerfile-dən təlimatları oxuyur və onları ardıcıl olaraq icra edir, image-nin lay-lay strukturasını yaradır. Bu mühazirədə, docker build komandasının necə işlədiyini, onun əsas parametrlərini və istifadə nümunələrini ətraflı araşdıracağıq.
docker build komandası, Dockerfile və build kontekstindən Docker image yaratmaq üçün istifadə olunur. Build konteksti - Docker-in image yaratmaq üçün istifadə edəcəyi fayllar toplusudur. Kontekst, lokal direktoriyanız və ya, məsələn, GitHub kimi, uzaq bir repozitoriya ola bilər.
Sintaksis
docker build [OPTIONS] PATH | URL | -
Burada:
-
PATH: Dockerfile və build kontekstini saxlayan direktoriyaya yol. URL: Uzaq repozitoriyanın URL ünvanı.-: Dockerfile-i standart girişdən (stdin) oxumaq.
Əsas istifadə nümunəsi
Bu nümunədə Docker, cari direktoriyadan ((.)) Dockerfile istifadə edəcək və myimage adlı və latest tag ilə bir image yaradacaq.
docker build -t myimage:latest .
4.2 build komandasının özəlləşdirilməsi
docker build komandasının əsas parametrləri
docker build komandası çoxlu sayda opsiyalar dəstəkləyir, bu da yığım prosesini tənzimləməyə imkan verir.
1. -t, --tag parametrləri
-t və ya --tag parametri yaradılan image üçün ad və tag təyin etmək üçün istifadə olunur.
docker build -t myimage:latest .
2. -f, --file parametrləri
-f və ya --file parametri, standart Dockerfile-dan fərqli bir alternativ Dockerfile göstərmək imkanı verir.
docker build -f Dockerfile.dev -t myimage:dev .
3. --build-arg parametri
--build-arg parametri Dockerfile-də ARG instruktsiyasının köməyi ilə təyin olunan yığım parametrlərini ötürmək üçün istifadə olunur.
docker build --build-arg APP_VERSION=1.0 -t myimage:1.0 .
4. --no-cache parametri
--no-cache parametri keşdən istifadə etmədən yığım aparmağa imkan verir. Bu, bütün komandaların yenidən icra olunmasını təmin etmək üçün faydalıdır.
docker build --no-cache -t myimage:latest .
5. --target parametri
--target parametri, çoxmərhələli yığımda hədəf mərhələni göstərmək üçün istifadə olunur.
docker build --target builder -t myimage:builder .
6. --rm parametrləri
--rm parametri Docker-a yığımın uğurla yekunlaşmasından sonra müvəqqəti konteynerləri silmək üçün göstəriş verir (default olaraq aktivdir).
docker build --rm -t myimage:latest .
4.3 Docker build nümunələri
Nümunə 1: Əsas yığım
Tutaq ki, sizin sadə bir Node.js tətbiqiniz var və siz bu tətbiqi yerləşdirmək üçün Docker-imaj yaratmaq istəyirsiniz.
Dockerfile:
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
Yığım komandası:
docker build -t mynodeapp:latest .
Bu nümunədə Docker cari direktoriyada olan Dockerfile-dan istifadə edərək mynodeapp adlı imaj yaradacaq və ona latest tagını əlavə edəcək.
Nümunə 2: Argümentlərlə yığım
Yığım argümentləri Dockerfile-a yığım zamanı dəyişənlər ötürməyə imkan verir.
Dockerfile
FROM node:14
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION}
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
Yığım komandası:
docker build --build-arg APP_VERSION=1.0 -t mynodeapp:1.0 .
Bu nümunədə APP_VERSION argümenti Dockerfile-a ötürülür, bu isə tətbiqin versiyasını yığım zamanı təyin etməyə imkan verir.
Nümunə 3: Çoxmərhələli yığım
Çoxmərhələli yığım yalnız lazımi komponentləri daxil edən imajlar yaratmaq üçün istifadə olunur, bu isə final imajın ölçüsünü azaltmağa imkan verir.
Dockerfile
# Yığım mərhələsi
FROM node:14 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# Lazımsız fayllar olmadan yalnız lazım olan fayllarla imaj yaratmaq
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html
Yığım komandası:
docker build -t mywebapp:latest .
Bu nümunədə öncə tətbiqin yığılması prosesinin aparıldığı aralıq builder imajı yaradılır. Daha sonra yığımın nəticələri yalnız Nginx əsasında yaradılmış final imajına əlavə olunur.
4.4 Praktiki məsləhətlər
1. Təlimatların sırasını optimallaşdırma
Docker cache-dən effektiv istifadə üçün ilk öncə tez-tez dəyişməyən faylları copy etmək tövsiyə olunur, məsələn package.json, və asılılıqları quraşdırmaq, sonra isə layihənin qalan fayllarını copy etmək.
COPY package*.json ./
RUN npm install
COPY . .
2. .dockerignore faylından istifadə
.dockerignore faylı yaradın ki, lazımsız faylları və kataloqları build kontekstindən çıxarasınız. Bu, build kontekstinin ölçüsünü kiçiltməyə və build prosesini sürətləndirməyə kömək edəcək.
.dockerignore nümunəsi:
node_modules
dist
*.log
3. Multi-stage build
Yalnız zəruri fayl və asılılıqları ehtiva edən yüngül image-lər yaratmaq üçün multi-stage build-dən istifadə edin.
GO TO FULL VERSION