Modèles de conteneurs

Bonnes pratiques Docker et conteneurs pour les déploiements de production

Modèles de conteneurs

Modèles d'utilisation efficaces des conteneurs pour le développement et la production.

Constructions en plusieurs étapes

Réduisez la taille de l’image en séparant la construction et l’exécution :

# 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"]

Bilans de santé

Incluez toujours des contrôles de santé :

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

Docker Compose pour le développement

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

Bonnes pratiques de sécurité

  1. Utiliser un utilisateur non root
RUN useradd -m appuser
USER appuser
  1. Épingler les versions d'images
FROM python:3.11.7-slim  # Not just :latest
  1. Rechercher les vulnérabilités
docker scan myimage:latest
trivy image myimage:latest
  1. Utilisez .dockerignore
.git
.env
__pycache__
*.pyc

Limites des ressources

Fixez toujours des limites en production :

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