version: '3.8' services: postgres: image: postgres:15-alpine container_name: xpeditis-postgres restart: unless-stopped environment: POSTGRES_USER: xpeditis POSTGRES_PASSWORD: xpeditis_dev_password POSTGRES_DB: xpeditis_dev ports: - '5432:5432' volumes: - postgres_data:/var/lib/postgresql/data - ./infra/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql healthcheck: test: ['CMD-SHELL', 'pg_isready -U xpeditis'] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: xpeditis-redis restart: unless-stopped ports: - '6379:6379' volumes: - redis_data:/data command: redis-server --appendonly yes --requirepass xpeditis_redis_password healthcheck: test: ['CMD', 'redis-cli', '--raw', 'incr', 'ping'] interval: 10s timeout: 5s retries: 5 minio: image: minio/minio:latest container_name: xpeditis-minio restart: unless-stopped ports: - '9000:9000' # API port - '9001:9001' # Console port environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin volumes: - minio_data:/data command: server /data --console-address ":9001" healthcheck: test: ['CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live'] interval: 30s timeout: 20s retries: 3 volumes: postgres_data: driver: local redis_data: driver: local minio_data: driver: local networks: default: name: xpeditis-network