docker-compose.unified.prod.yml 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. version: '3.8'
  2. services:
  3. # Unified Backend + Frontend Application (Production)
  4. app:
  5. build:
  6. context: .
  7. dockerfile: Dockerfile.unified
  8. args:
  9. - VUE_APP_API_URL=/api
  10. container_name: inventory-app-prod
  11. ports:
  12. - "${FRONTEND_PORT:-3000}:80"
  13. environment:
  14. # Database Configuration
  15. - DB_HOST=${DB_HOST:-127.0.0.1}
  16. - DB_PORT=${DB_PORT:-3306}
  17. - DB_NAME=${DB_NAME:-inventory_db}
  18. - DB_USER=${DB_USER:-root}
  19. - DB_PASS=${DB_PASS:-root}
  20. # Company Information
  21. - COMPANY_NAME=${COMPANY_NAME:-Your Company Name}
  22. - COMPANY_ADDRESS=${COMPANY_ADDRESS:-123 Business Street}
  23. - COMPANY_POSTAL_CODE=${COMPANY_POSTAL_CODE:-00100}
  24. - COMPANY_CITY=${COMPANY_CITY:-Helsinki}
  25. - COMPANY_COUNTRY=${COMPANY_COUNTRY:-Finland}
  26. - COMPANY_PHONE=${COMPANY_PHONE:-+358 123 456 789}
  27. - COMPANY_EMAIL=${COMPANY_EMAIL:-info@company.com}
  28. - COMPANY_Y_TUNNUS=${COMPANY_Y_TUNNUS:-1234567-8}
  29. # File Upload Configuration
  30. - UPLOAD_MAX_SIZE=${UPLOAD_MAX_SIZE:-10M}
  31. - ALLOWED_FILE_TYPES=${ALLOWED_FILE_TYPES:-pdf,doc,docx,xls,xlsx,jpg,jpeg,png,gif}
  32. - UPLOADS_PATH=${UPLOADS_PATH:-./uploads}
  33. # Frontend Configuration (relative path for internal communication)
  34. - VUE_APP_API_URL=/api
  35. # Optional: Redis Configuration
  36. - REDIS_HOST=${REDIS_HOST:-redis}
  37. - REDIS_PORT=${REDIS_PORT:-6379}
  38. # Optional: Email Configuration (for future use)
  39. - MAIL_HOST=${MAIL_HOST:-smtp.gmail.com}
  40. - MAIL_PORT=${MAIL_PORT:-587}
  41. - MAIL_USERNAME=${MAIL_USERNAME:-your-email@gmail.com}
  42. - MAIL_PASSWORD=${MAIL_PASSWORD:-your-app-password}
  43. volumes:
  44. - ./uploads:/var/www/html/uploads
  45. - ./backend:/var/www/html
  46. networks:
  47. - inventory-network
  48. restart: unless-stopped
  49. healthcheck:
  50. test: ["CMD", "curl", "-f", "http://localhost/api/company.php"]
  51. interval: 30s
  52. timeout: 10s
  53. retries: 3
  54. start_period: 40s
  55. # Redis Service (optional)
  56. redis:
  57. image: redis:7-alpine
  58. container_name: inventory-redis-prod
  59. ports:
  60. - "${REDIS_PORT:-6379}:6379"
  61. volumes:
  62. - redis_data:/data
  63. networks:
  64. - inventory-network
  65. restart: unless-stopped
  66. command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
  67. # Networks
  68. networks:
  69. inventory-network:
  70. driver: bridge
  71. # Volumes
  72. volumes:
  73. uploads_data:
  74. driver: local
  75. redis_data:
  76. driver: local