_CORE
AI & Agentic Systems Core Information Systems Cloud & Platform Engineering Data Platform & Integration Security & Compliance QA, Testing & Observability IoT, Automation & Robotics Mobile & Digital Banking & Finance Insurance Public Administration Defense & Security Healthcare Energy & Utilities Telco & Media Manufacturing Logistics & E-commerce Retail & Loyalty
References Technologies Blog Know-how Tools
About Collaboration Careers
CS EN
Let's talk

Docker Multi-stage Builds

12. 09. 2025 1 min read intermediate

DevOps Středně pokročilý

Docker Multi-stage Builds

DockerContainerizationOptimalizace 6 min read

Optimalizace Docker obrazů pomocí multi-stage builds. Menší image, rychlejší deploy, bezpečnější kontejnery.

Proč Multi-stage

Klasický Dockerfile obsahuje build tools i v produkčním image. Multi-stage builds oddělují build a runtime fázi.

  • Menší finální image (100 MB vs 1 GB)
  • Žádné build tools v produkci
  • Rychlejší pull a deploy
  • Menší attack surface

Example: Go Aplikace

FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /app/server ./cmd/server

FROM gcr.io/distroless/static-debian12:nonroot
COPY --from=builder /app/server /server
USER nonroot:nonroot
EXPOSE 8080
ENTRYPOINT ["/server"]

Výsledný image: ~10 MB místo ~800 MB s plným Go SDK.

Example: Node.js

FROM node:20-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

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

FROM node:20-alpine
WORKDIR /app
RUN addgroup -g 1001 -S nodejs && adduser -S nextjs -u 1001
COPY --from=deps /app/node_modules ./node_modules
COPY --from=build /app/dist ./dist
USER nextjs
EXPOSE 3000
CMD ["node", "dist/main.js"]

Best Practices

  • Používejte .dockerignore — vylučte node_modules, .git, docs
  • Řaďte COPY příkazy od nejméně měnících se po nejčastěji měněné
  • Použijte --mount=type=cache pro cachování build závislostí
  • Pinujte verze base image (ne :latest)
  • Skenujte výsledný image: trivy image myapp:latest

Summary

Multi-stage builds jsou základ moderní containerizace. Oddělení build a runtime fáze dramaticky snižuje velikost image a zlepšuje bezpečnost.

Need Help with Implementation?

Our team has experience designing and implementing modern architectures. We’re happy to help.

Free Consultation

Share:

CORE SYSTEMS tým

Stavíme core systémy a AI agenty, které drží provoz. 15 let zkušeností s enterprise IT.