services: minio: image: minio/minio:RELEASE.2025-04-22T22-12-26Z container_name: hrms-minio command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin} ports: - "9000:9000" # S3 API - "9001:9001" # web console volumes: - minio-data:/data healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 10s timeout: 5s retries: 5 start_period: 10s restart: unless-stopped # One-shot: creates the attachments bucket, then exits. minio-init: image: minio/mc:RELEASE.2025-04-16T18-13-26Z container_name: hrms-minio-init depends_on: minio: condition: service_healthy environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin} MINIO_BUCKET: ${MINIO_BUCKET:-hrms-attachments} entrypoint: > /bin/sh -c " mc alias set local http://minio:9000 \"$$MINIO_ROOT_USER\" \"$$MINIO_ROOT_PASSWORD\" && mc mb --ignore-existing local/\"$$MINIO_BUCKET\" && mc version enable local/\"$$MINIO_BUCKET\" && echo 'bucket ready: '\"$$MINIO_BUCKET\" " postgres: image: postgres:16-alpine container_name: hrms-postgres environment: POSTGRES_USER: ${DB_USERNAME:-postgres} POSTGRES_PASSWORD: ${DB_PASSWORD:-postgres} POSTGRES_DB: ${DB_NAME:-hrms} ports: - "${DB_PORT:-5432}:5432" volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USERNAME:-postgres} -d ${DB_NAME:-hrms}"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped volumes: minio-data: postgres-data: