Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Know-how Nástroje
O nás Spolupráce Kariéra
Pojďme to probrat

Docker Multi-stage Builds

07. 02. 2026 1 min čtení intermediate

DevOps Středně pokročilý

Docker Multi-stage Builds

DockerContainerizationOptimalizace 6 min čtení

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

Příklad: 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.

Příklad: 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

Shrnutí

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.

Potřebujete pomoct s implementací?

Náš tým má zkušenosti s návrhem a implementací moderních architektur. Rádi vám pomůžeme.

Nezávazná konzultace

Sdílet:

CORE SYSTEMS tým

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