docker-compose.yml 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. version: '3.8'
  2. services:
  3. # MySQL Database
  4. db:
  5. image: mysql:8.0
  6. container_name: radionica_db
  7. restart: always
  8. environment:
  9. MYSQL_DATABASE: radionica3d
  10. MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-very_strong_password}
  11. volumes:
  12. - db_data:/var/lib/mysql
  13. networks:
  14. - radionica_net
  15. # Redis for sessions and rate limiting
  16. redis:
  17. image: redis:alpine
  18. container_name: radionica_redis
  19. restart: always
  20. networks:
  21. - radionica_net
  22. # Backend (FastAPI)
  23. backend:
  24. build:
  25. context: .
  26. dockerfile: backend.Dockerfile
  27. container_name: radionica_backend
  28. restart: always
  29. environment:
  30. - DB_HOST=db
  31. - DB_NAME=radionica3d
  32. - DB_USER=root
  33. - DB_PASS=${DB_ROOT_PASSWORD:-very_strong_password}
  34. - REDIS_HOST=redis
  35. - SYNC_SLICING=True
  36. - RADIONICA_DEBUG=False
  37. depends_on:
  38. - db
  39. - redis
  40. volumes:
  41. - uploads_data:/app/uploads
  42. networks:
  43. - radionica_net
  44. # Frontend (Nginx)
  45. proxy:
  46. image: nginx:alpine
  47. container_name: radionica_proxy
  48. ports:
  49. - "80:80"
  50. - "443:443"
  51. volumes:
  52. - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
  53. - ./dist:/usr/share/nginx/html:ro
  54. - uploads_data:/app/uploads:ro
  55. depends_on:
  56. - backend
  57. networks:
  58. - radionica_net
  59. networks:
  60. radionica_net:
  61. driver: bridge
  62. volumes:
  63. db_data:
  64. uploads_data: