Containermuster

Best Practices für Docker und Container für Produktionsbereitstellungen

ContainerPatterns

Effektive Containernutzungsmuster für Entwicklung und Produktion.

Mehrstufige Builds

Reduzieren Sie die Bildgröße, indem Sie Build- und Laufzeit trennen:

# Build stage
FROM python:3.11-slim AS builder
WORKDIR /app
COPY pyproject.toml .
RUN pip install build && python -m build

# Runtime stage
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /app/dist/*.whl .
RUN pip install *.whl && rm *.whl
CMD ["python", "-m", "myapp"]

Gesundheitschecks

Integrieren Sie immer Gesundheitschecks:

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

Docker Compose für die Entwicklung

version: "3.9"

services:
  app:
    build: .
    ports:
      - "8000:8000"
    volumes:
      - ./src:/app/src  # Hot reload
    environment:
      - DEBUG=true
    depends_on:
      db:
        condition: service_healthy

  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: devpass
    healthcheck:
      test: ["CMD", "pg_isready"]
      interval: 5s
      timeout: 5s
      retries: 5

Best Practices für die Sicherheit

  1. Nicht-Root-Benutzer verwenden
RUN useradd -m appuser
USER appuser
  1. Bildversionen anheften
FROM python:3.11.7-slim  # Not just :latest
  1. Nach Schwachstellen suchen
docker scan myimage:latest
trivy image myimage:latest
  1. Verwenden Sie .dockerignore
.git
.env
__pycache__
*.pyc

Ressourcenlimits

Setzen Sie in der Produktion immer Grenzen:

deploy:
  resources:
    limits:
      cpus: "1.0"
      memory: 512M
    reservations:
      cpus: "0.25"
      memory: 128M