docker-compose.services.yml 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. services:
  2. pgsql:
  3. image: postgres:18-alpine3.21
  4. restart: unless-stopped
  5. environment:
  6. POSTGRES_DB: ${DB_DATABASE:-app}
  7. POSTGRES_USER: ${DB_USERNAME:-laravel}
  8. POSTGRES_PASSWORD: ${DB_PASSWORD:-password}
  9. volumes:
  10. - pgsql-data:/var/lib/postgresql/data:rw
  11. healthcheck:
  12. test: pg_isready -d ${DB_DATABASE:-app} -U ${DB_USERNAME:-laravel}
  13. interval: 2s
  14. timeout: 5s
  15. start_period: 2s
  16. redis:
  17. image: redis:8-alpine3.21
  18. restart: unless-stopped
  19. command: >
  20. --requirepass ${REDIS_PASSWORD}
  21. volumes:
  22. - redis-data:/data:rw
  23. healthcheck:
  24. test: [ 'CMD', 'redis-cli', 'ping' ]
  25. interval: 500ms
  26. timeout: 1s
  27. mailpit:
  28. image: axllent/mailpit:v1.27
  29. restart: unless-stopped
  30. volumes:
  31. - mailpit-data:/data
  32. minio:
  33. image: minio/minio:latest
  34. restart: unless-stopped
  35. command: 'minio server /data --console-address ":8900"'
  36. environment:
  37. MINIO_ROOT_USER: ${AWS_ACCESS_KEY_ID}
  38. MINIO_ROOT_PASSWORD: ${AWS_SECRET_ACCESS_KEY}
  39. volumes:
  40. - minio-data:/data
  41. healthcheck:
  42. test: [ "CMD", "curl", "-f", "http://localhost:8900/minio/health/live" ]
  43. interval: 5s
  44. retries: 5
  45. minio-init:
  46. image: minio/mc
  47. entrypoint: >
  48. /bin/sh -c "sleep 5 && mc alias set local http://minio:${FORWARD_MINIO_PORT:-9000} ${AWS_ACCESS_KEY_ID} ${AWS_SECRET_ACCESS_KEY} && mc mb ${AWS_DEFAULT_REGION}/${AWS_BUCKET}"
  49. depends_on:
  50. - minio
  51. volumes:
  52. redis-data: { }
  53. minio-data: { }
  54. pgsql-data: { }
  55. mailpit-data: { }