docker-compose.yml 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. version: '3.8'
  2. services:
  3. # Backend PHP Service
  4. backend:
  5. build:
  6. context: .
  7. dockerfile: Dockerfile
  8. container_name: inventory-backend
  9. ports:
  10. - "8080:80"
  11. environment:
  12. - DB_HOST=${DB_HOST:-mysql}
  13. - DB_PORT=${DB_PORT:-3306}
  14. - DB_NAME=${DB_NAME:-inventory_db}
  15. - DB_USER=${DB_USER:-inventory_user}
  16. - DB_PASS=${DB_PASS:-inventory_password}
  17. - COMPANY_NAME=${COMPANY_NAME:-Inventory Management}
  18. - COMPANY_ADDRESS=${COMPANY_ADDRESS:-123 Business St}
  19. - COMPANY_CITY=${COMPANY_CITY:-Helsinki}
  20. - COMPANY_POSTAL_CODE=${COMPANY_POSTAL_CODE:-00100}
  21. - COMPANY_COUNTRY=${COMPANY_COUNTRY:-Finland}
  22. - COMPANY_PHONE=${COMPANY_PHONE:-+358 123 456 789}
  23. - COMPANY_EMAIL=${COMPANY_EMAIL:-info@company.com}
  24. - COMPANY_Y_TUNNUS=${COMPANY_Y_TUNNUS:-1234567-8}
  25. - UPLOAD_MAX_SIZE=${UPLOAD_MAX_SIZE:-10M}
  26. - ALLOWED_FILE_TYPES=${ALLOWED_FILE_TYPES:-pdf,doc,docx,xls,xlsx,jpg,jpeg,png,gif}
  27. volumes:
  28. - uploads_data:/var/www/html/uploads
  29. - ./backend:/var/www/html
  30. depends_on:
  31. - mysql
  32. networks:
  33. - inventory-network
  34. restart: unless-stopped
  35. # Frontend Vue.js Service
  36. frontend:
  37. build:
  38. context: ./frontend
  39. dockerfile: Dockerfile
  40. container_name: inventory-frontend
  41. ports:
  42. - "3000:80"
  43. environment:
  44. - VUE_APP_API_URL=${VUE_APP_API_URL:-http://localhost:8080}
  45. depends_on:
  46. - backend
  47. networks:
  48. - inventory-network
  49. restart: unless-stopped
  50. # MySQL Database Service
  51. mysql:
  52. image: mysql:8.0
  53. container_name: inventory-mysql
  54. ports:
  55. - "3306:3306"
  56. environment:
  57. - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-root_password}
  58. - MYSQL_DATABASE=${DB_NAME:-inventory_db}
  59. - MYSQL_USER=${DB_USER:-inventory_user}
  60. - MYSQL_PASSWORD=${DB_PASS:-inventory_password}
  61. volumes:
  62. - mysql_data:/var/lib/mysql
  63. - ./database/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
  64. networks:
  65. - inventory-network
  66. restart: unless-stopped
  67. command: --default-authentication-plugin=mysql_native_password
  68. # Redis Cache Service (Optional)
  69. redis:
  70. image: redis:7-alpine
  71. container_name: inventory-redis
  72. ports:
  73. - "6379:6379"
  74. volumes:
  75. - redis_data:/data
  76. networks:
  77. - inventory-network
  78. restart: unless-stopped
  79. command: redis-server --appendonly yes
  80. volumes:
  81. mysql_data:
  82. driver: local
  83. redis_data:
  84. driver: local
  85. uploads_data:
  86. driver: local
  87. driver_opts:
  88. type: none
  89. o: bind
  90. device: ${UPLOADS_PATH:-./uploads}
  91. networks:
  92. inventory-network:
  93. driver: bridge