docker-compose.services.yml 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. ports:
  12. - 5432:5432
  13. healthcheck:
  14. test: pg_isready -d ${DB_DATABASE:-app} -U ${DB_USERNAME:-laravel}
  15. interval: 2s
  16. timeout: 5s
  17. start_period: 2s
  18. redis:
  19. image: redis:8-alpine3.21
  20. restart: unless-stopped
  21. command: >
  22. --requirepass ${REDIS_PASSWORD}
  23. volumes:
  24. - redis-data:/data:rw
  25. healthcheck:
  26. test: [ 'CMD', 'redis-cli', 'ping' ]
  27. interval: 500ms
  28. timeout: 1s
  29. mailpit:
  30. image: axllent/mailpit:v1.27
  31. restart: unless-stopped
  32. volumes:
  33. - mailpit-data:/data
  34. minio:
  35. image: minio/minio:latest
  36. restart: unless-stopped
  37. command: 'minio server /data --console-address ":8900"'
  38. environment:
  39. MINIO_ROOT_USER: ${AWS_ACCESS_KEY_ID}
  40. MINIO_ROOT_PASSWORD: ${AWS_SECRET_ACCESS_KEY}
  41. volumes:
  42. - minio-data:/data
  43. healthcheck:
  44. test: [ "CMD", "curl", "-f", "http://localhost:8900/minio/health/live" ]
  45. interval: 5s
  46. retries: 5
  47. minio-init:
  48. image: minio/mc
  49. entrypoint: >
  50. /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}"
  51. depends_on:
  52. - minio
  53. volumes:
  54. redis-data: { }
  55. minio-data: { }
  56. pgsql-data: { }
  57. mailpit-data: { }