docker-compose.yml 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. version: '3.8'
  2. services:
  3. # Redis for Celery
  4. redis:
  5. image: redis:7-alpine
  6. ports:
  7. - "6379:6379"
  8. volumes:
  9. - redis_data:/data
  10. healthcheck:
  11. test: ["CMD", "redis-cli", "ping"]
  12. interval: 10s
  13. timeout: 5s
  14. retries: 5
  15. # Web application (Frontend + Backend)
  16. web:
  17. build: .
  18. ports:
  19. - "5000:5000"
  20. environment:
  21. - FLASK_ENV=production
  22. - SECRET_KEY=${SECRET_KEY:-change-me-in-production}
  23. - JWT_SECRET_KEY=${JWT_SECRET_KEY:-change-jwt-secret}
  24. - ENCRYPTION_KEY=${ENCRYPTION_KEY:-change-encryption-key}
  25. - DATABASE_URL=sqlite:///instance/prod.db
  26. - CELERY_BROKER_URL=redis://redis:6379/0
  27. - CELERY_RESULT_BACKEND=redis://redis:6379/1
  28. volumes:
  29. - ./data/uploads:/app/uploads
  30. - ./data/reports:/app/reports
  31. - ./data/instance:/app/instance
  32. depends_on:
  33. redis:
  34. condition: service_healthy
  35. # Celery worker
  36. worker:
  37. build: .
  38. command: celery -A celery_worker.celery worker --loglevel=info
  39. environment:
  40. - FLASK_ENV=production
  41. - SECRET_KEY=${SECRET_KEY:-change-me-in-production}
  42. - JWT_SECRET_KEY=${JWT_SECRET_KEY:-change-jwt-secret}
  43. - ENCRYPTION_KEY=${ENCRYPTION_KEY:-change-encryption-key}
  44. - DATABASE_URL=sqlite:///instance/prod.db
  45. - CELERY_BROKER_URL=redis://redis:6379/0
  46. - CELERY_RESULT_BACKEND=redis://redis:6379/1
  47. volumes:
  48. - ./data/uploads:/app/uploads
  49. - ./data/reports:/app/reports
  50. - ./data/instance:/app/instance
  51. depends_on:
  52. redis:
  53. condition: service_healthy
  54. volumes:
  55. redis_data: