Conteneurisation avec Docker
1. Objectifs
- Uniformiser les environnements de développement et de production
- Simplifier le déploiement multi-composants
- Isoler les dépendances et garantir la portabilité
2. Images construites
Chaque composant possède son propre Dockerfile :
backend/Dockerfile: API FastAPIfrontend/Dockerfile: Application Reactscraper/Dockerfile: Scrapy Allociné
Exemple de Dockerfile backend :
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8001"]3. Docker Compose
L’orchestration locale est réalisée via docker-compose.yml à la racine du projet :
docker-compose up -dCe fichier permet de lancer simultanément :
- Backend (FastAPI)
- Frontend (React)
- PostgreSQL
- MongoDB
- Scraper (job one-shot)
Extrait du docker-compose.yml :
services:
backend:
build: ./projet/backend
ports:
- "8001:8001"
depends_on:
- db
frontend:
build: ./projet/frontend
ports:
- "3000:3000"
db:
image: postgres:15
ports:
- "5432:5432"
mongo:
image: mongo:latest
ports:
- "27017:27017"Les volumes et réseaux sont automatiquement créés pour l’isolation et la persistance des données.