İyi yazılmış bir Dockerfile, verimli, güvenli ve sürdürülebilir konteynerler oluşturmanın temelidir. Bu rehberde, sektör en iyi uygulamalarını inceleyeceğiz.

1. Resmi ve Minimal Base Image Kullanın

# İyi
FROM node:18-alpine
# Kaçının
FROM ubuntu:latest

Alpine tabanlı imajlar daha küçük ve güvenlidir.

2. Multi-stage Build Kullanın

# Build aşaması
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Production aşaması
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/index.js"]

3. Katman Önbelleğini Optimize Edin

Sık değişen dosyaları sona koyun:

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

4. Gereksiz Dosyaları Hariç Tutun

.dockerignore dosyası kullanın:

node_modules
.git
*.md
.env
tests/

5. Root Olmayan Kullanıcı Kullanın

RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001
USER nextjs

6. Tek RUN Komutunda Birleştirin

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        curl \
        git && \
    rm -rf /var/lib/apt/lists/*

7. HEALTHCHECK Ekleyin

HEALTHCHECK --interval=30s --timeout=3s \
  CMD curl -f http://localhost:3000/health || exit 1

8. Belirli Tag Kullanın

# İyi
FROM node:18.17.0-alpine3.18
# Kaçının
FROM node:latest

Sonuç

Bu en iyi uygulamaları takip ederek, daha küçük, daha güvenli ve daha sürdürülebilir Docker imajları oluşturabilirsiniz.