docker-compose-with-services.yml 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. version: '3.8'
  2. services:
  3. # Complete Inventory Solution (Single Container)
  4. inventory-app:
  5. build:
  6. context: .
  7. dockerfile: Dockerfile
  8. container_name: inventory-app
  9. ports:
  10. - "${FRONTEND_PORT:-80}:80"
  11. environment:
  12. - DB_HOST=${DB_HOST:-mariadb}
  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. - REDIS_HOST=${REDIS_HOST:-redis}
  18. - REDIS_PORT=${REDIS_PORT:-6379}
  19. - COMPANY_NAME=${COMPANY_NAME:-Inventory Management}
  20. - COMPANY_ADDRESS=${COMPANY_ADDRESS:-123 Business St}
  21. - COMPANY_CITY=${COMPANY_CITY:-Helsinki}
  22. - COMPANY_POSTAL_CODE=${COMPANY_POSTAL_CODE:-00100}
  23. - COMPANY_COUNTRY=${COMPANY_COUNTRY:-Finland}
  24. - COMPANY_PHONE=${COMPANY_PHONE:-+358 123 456 789}
  25. - COMPANY_EMAIL=${COMPANY_EMAIL:-info@company.com}
  26. - COMPANY_Y_TUNNUS=${COMPANY_Y_TUNNUS:-1234567-8}
  27. - UPLOAD_MAX_SIZE=${UPLOAD_MAX_SIZE:-10M}
  28. - ALLOWED_FILE_TYPES=${ALLOWED_FILE_TYPES:-pdf,doc,docx,xls,xlsx,jpg,jpeg,png,gif}
  29. volumes:
  30. - ${APP_LOCATION}/uploads:/var/www/html/uploads
  31. restart: unless-stopped
  32. depends_on:
  33. - mariadb
  34. - redis
  35. healthcheck:
  36. test: ["CMD", "curl", "-f", "http://localhost/api/company.php"]
  37. interval: 30s
  38. timeout: 10s
  39. retries: 3
  40. start_period: 40s
  41. # MariaDB Database Service
  42. mariadb:
  43. image: mariadb:10.11
  44. container_name: inventory-mariadb
  45. ports:
  46. - "${MARIADB_PORT:-3306}:3306"
  47. environment:
  48. - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-root_password}
  49. - MYSQL_DATABASE=${DB_NAME:-inventory_db}
  50. - MYSQL_USER=${DB_USER:-inventory_user}
  51. - MYSQL_PASSWORD=${DB_PASS:-inventory_password}
  52. volumes:
  53. - ${DB_LOCATION}/mariadb_data:/var/lib/mysql
  54. restart: unless-stopped
  55. healthcheck:
  56. test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD:-root_password}"]
  57. interval: 30s
  58. timeout: 10s
  59. retries: 3
  60. start_period: 40s
  61. # Redis Cache Service
  62. redis:
  63. image: redis:7-alpine
  64. container_name: inventory-redis
  65. ports:
  66. - "${REDIS_PORT:-6379}:6379"
  67. volumes:
  68. - ${REDIS_LOCATION}/redis_data:/data
  69. restart: unless-stopped
  70. command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-redis_password}
  71. healthcheck:
  72. test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
  73. interval: 30s
  74. timeout: 10s
  75. retries: 3
  76. start_period: 40s
  77. volumes:
  78. mariadb_data:
  79. driver: local
  80. redis_data:
  81. driver: local
  82. uploads_data:
  83. driver: local
  84. driver_opts:
  85. type: none
  86. o: bind
  87. device: ${UPLOADS_PATH:-./uploads}
  88. networks:
  89. default:
  90. name: inventory-network
  91. driver: bridge