CodeGym /Kurslar /Docker SELF /Image yığımı

Image yığımı

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

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.

Terminal


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.

Terminal


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.

Terminal


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.

Terminal


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.

Terminal


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.

Terminal


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

Terminal


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:

dockerfile


FROM node:14

WORKDIR /app
        
COPY package*.json ./
RUN npm install
        
COPY . .
        
EXPOSE 3000
        
CMD ["node", "app.js"]

Yığım komandası:

Terminal


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

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

Terminal


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

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

Terminal


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.

dockerfile


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:

Text


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.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION