docker-compose.yml 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. services:
  2. postgres:
  3. image: postgres:16-alpine
  4. container_name: hr-lab-postgres
  5. environment:
  6. POSTGRES_DB: hr_lab
  7. POSTGRES_USER: hr_app
  8. POSTGRES_PASSWORD: hr_app_password
  9. ports:
  10. - "5432:5432"
  11. volumes:
  12. - postgres-data:/var/lib/postgresql/data
  13. - ../storage/backups:/backups
  14. healthcheck:
  15. test: ["CMD-SHELL", "pg_isready -U hr_app -d hr_lab"]
  16. interval: 10s
  17. timeout: 5s
  18. retries: 10
  19. redis:
  20. image: redis:7-alpine
  21. container_name: hr-lab-redis
  22. ports:
  23. - "6379:6379"
  24. healthcheck:
  25. test: ["CMD", "redis-cli", "ping"]
  26. interval: 10s
  27. timeout: 5s
  28. retries: 10
  29. rabbitmq:
  30. image: rabbitmq:3.13-management-alpine
  31. container_name: hr-lab-rabbitmq
  32. environment:
  33. RABBITMQ_DEFAULT_USER: hr_app
  34. RABBITMQ_DEFAULT_PASS: hr_app_password
  35. RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS: "+S 2:2 +sbwt none +sbwtdcpu none +sbwtdio none"
  36. ports:
  37. - "5672:5672"
  38. - "15672:15672"
  39. volumes:
  40. - ./rabbitmq.conf:/etc/rabbitmq/conf.d/20-hr-lab.conf:ro
  41. healthcheck:
  42. test: ["CMD", "rabbitmq-diagnostics", "ping"]
  43. interval: 10s
  44. timeout: 5s
  45. retries: 10
  46. backend:
  47. build:
  48. context: ..
  49. dockerfile: deploy/backend.Dockerfile
  50. container_name: hr-lab-backend
  51. environment:
  52. SPRING_PROFILES_ACTIVE: lab
  53. DB_URL: jdbc:postgresql://postgres:5432/hr_lab
  54. DB_USERNAME: hr_app
  55. DB_PASSWORD: hr_app_password
  56. REDIS_HOST: redis
  57. RABBITMQ_HOST: rabbitmq
  58. RABBITMQ_USERNAME: hr_app
  59. RABBITMQ_PASSWORD: hr_app_password
  60. JWT_SECRET: local-development-secret-please-change-32bytes
  61. TASKS_INLINE: "true"
  62. LAB_EMPLOYEE_COUNT: "2000"
  63. LAB_CANDIDATE_COUNT: "500"
  64. LAB_ATTENDANCE_DAYS: "180"
  65. EXPORT_DIR: /app/storage/exports
  66. IMPORT_DIR: /app/storage/imports
  67. ports:
  68. - "8080:8080"
  69. volumes:
  70. - ../storage:/app/storage
  71. depends_on:
  72. postgres:
  73. condition: service_healthy
  74. redis:
  75. condition: service_healthy
  76. rabbitmq:
  77. condition: service_healthy
  78. frontend:
  79. build:
  80. context: ..
  81. dockerfile: deploy/frontend.Dockerfile
  82. container_name: hr-lab-frontend
  83. ports:
  84. - "5173:80"
  85. depends_on:
  86. - backend
  87. volumes:
  88. postgres-data: