0Pricing
Docker & Kubernetes for Developers · Урок

Многоэтапная сборка компактных рабочих образов

Освойте многоэтапные Dockerfile: компилируйте или собирайте приложение на этапе сборки, а затем копируйте только артефакты в небольшой образ среды выполнения

«Многоэтапная сборка компактных рабочих образов» — бесплатный урок Docker & Kubernetes for Developers на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Docker & Kubernetes for Developers, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Docker & Kubernetes for Developers содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

The Fat Image Problem

A single-stage build often ships compilers, dev dependencies, and source code into production. The result is a large, slower-to-pull, larger-attack-surface image.

What Is a Multi-Stage Build

A multi-stage build uses several FROM statements in one Dockerfile. Earlier stages build artifacts; a final lean stage copies only what it needs to run.

A Go Multi-Stage Example

Compile in a Go image, then ship a tiny final image with just the binary.

FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app .

FROM alpine:3.20
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

Copying From a Named Stage

The key line is COPY --from=build. It pulls the compiled app binary out of the build stage, leaving the Go toolchain behind.

A Node.js Multi-Stage Example

Install and build with dev deps, then copy only the production output.

FROM node:20 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-slim
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY package*.json ./
RUN npm ci --omit=dev
CMD ["node", "dist/index.js"]

Choosing a Slim Base

Final stages should use minimal bases like alpine, -slim, or distroless. Smaller bases mean fewer packages and fewer vulnerabilities.

Distroless Images

Google distroless images contain only your app and its runtime, no shell or package manager. They are very small and hard to exploit interactively.

FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

Targeting a Specific Stage

You can build only up to a named stage with --target, useful for running tests in CI.

docker build --target build -t myapp:test .

Caching Dependencies

Copy dependency manifests before the rest of the source. Then dependency installation is cached and only re-runs when the manifest changes.

COPY package*.json ./
RUN npm ci
COPY . .

Measuring the Win

Compare sizes before and after. Multi-stage builds commonly shrink images from hundreds of MB to tens of MB.

docker images myapp

Combining With .dockerignore

Add a .dockerignore so build context excludes node_modules, .git, and secrets, speeding builds and avoiding leaking files into images.

node_modules
.git
*.env

Quick Check

Test what you have learned.

Recap

You learned to split Dockerfiles into build and runtime stages, copy only artifacts with --from, pick slim or distroless bases, target stages, and combine with .dockerignore for lean production images.

Часто задаваемые вопросы

Урок «Многоэтапная сборка компактных рабочих образов» бесплатный?

Да — полный текст урока «Многоэтапная сборка компактных рабочих образов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Docker & Kubernetes for Developers, подпишись на CoddyKit PRO. Курс Docker & Kubernetes for Developers содержит 4 уроков всего.

Чему я научусь в уроке «Многоэтапная сборка компактных рабочих образов»?

Освойте многоэтапные Dockerfile: компилируйте или собирайте приложение на этапе сборки, а затем копируйте только артефакты в небольшой образ среды выполнения Ты практикуешь Docker & Kubernetes for Developers с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Docker & Kubernetes for Developers?

Предыдущий опыт не требуется. Docker & Kubernetes for Developers на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Многоэтапная сборка компактных рабочих образов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Docker & Kubernetes for Developers?

Да. Каждый урок Docker & Kubernetes for Developers включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Контейнеризация веб-приложения
  2. Оптимизация образов Docker
  3. Безопасность и практики для рабочей среды
  4. Многоэтапная сборка компактных рабочих образов
← Назад к Docker & Kubernetes for Developers