Initial commit
This commit is contained in:
127
docker-compose.advanced.yml
Normal file
127
docker-compose.advanced.yml
Normal file
@@ -0,0 +1,127 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
# Backend FastAPI avec support des permissions système
|
||||
backend:
|
||||
build:
|
||||
context: ./backend
|
||||
dockerfile: Dockerfile
|
||||
container_name: innotexboard-api
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
# Socket Docker - permet au backend de gérer les conteneurs
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
|
||||
# /proc et /sys - pour psutil et les stats système
|
||||
- /proc:/proc:ro
|
||||
- /sys:/sys:ro
|
||||
|
||||
# Code source en développement
|
||||
- ./backend:/app
|
||||
|
||||
environment:
|
||||
- SECRET_KEY=${SECRET_KEY:-your-super-secret-key-change-in-production}
|
||||
- FRONTEND_URL=http://localhost:3000
|
||||
- ACCESS_TOKEN_EXPIRE_MINUTES=480
|
||||
- PYTHONUNBUFFERED=1
|
||||
|
||||
# Nécessaire pour accéder à /proc et /sys
|
||||
privileged: false
|
||||
|
||||
# Capacités Linux minimales pour lire le système
|
||||
cap_add:
|
||||
- SYS_ADMIN
|
||||
|
||||
command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload
|
||||
|
||||
networks:
|
||||
- innotexboard
|
||||
|
||||
# Pour les logs
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
|
||||
# Frontend Vue.js avec Vite
|
||||
frontend:
|
||||
build:
|
||||
context: ./frontend
|
||||
dockerfile: Dockerfile
|
||||
container_name: innotexboard-web
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3000:3000"
|
||||
|
||||
volumes:
|
||||
# Code source en développement
|
||||
- ./frontend:/app
|
||||
# Éviter de mapper node_modules
|
||||
- /app/node_modules
|
||||
|
||||
environment:
|
||||
- VITE_API_URL=http://localhost:8000/api/v1
|
||||
|
||||
command: npm run dev -- --host
|
||||
|
||||
networks:
|
||||
- innotexboard
|
||||
|
||||
depends_on:
|
||||
- backend
|
||||
|
||||
# Pour les logs
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
|
||||
# (Optionnel) Nginx en reverse proxy pour la production
|
||||
nginx:
|
||||
image: nginx:alpine
|
||||
container_name: innotexboard-proxy
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
|
||||
volumes:
|
||||
# Configuration Nginx
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
|
||||
# Certificats SSL (à générer)
|
||||
- ./certs:/etc/nginx/certs:ro
|
||||
|
||||
networks:
|
||||
- innotexboard
|
||||
|
||||
depends_on:
|
||||
- backend
|
||||
- frontend
|
||||
|
||||
profiles:
|
||||
- production # Décommenter pour activer en prod: docker-compose --profile production up
|
||||
|
||||
networks:
|
||||
innotexboard:
|
||||
driver: bridge
|
||||
|
||||
# Usage:
|
||||
# Développement: docker-compose up
|
||||
# Production: docker-compose --profile production up
|
||||
#
|
||||
# Build only: docker-compose build
|
||||
# Down: docker-compose down
|
||||
# Logs: docker-compose logs -f backend
|
||||
# SSH to backend: docker-compose exec backend bash
|
||||
Reference in New Issue
Block a user