services: app: build: . ports: - "127.0.0.1:3000:3000" env_file: .env environment: DATABASE_URL: postgres://${DB_USER:?required}:${DB_PASSWORD:?required}@db:5432/moyasar_storage_production STORAGE_BACKEND: ${STORAGE_BACKEND:-local} LOCAL_STORAGE_PATH: /rails/storage depends_on: db: condition: service_healthy volumes: - rails_storage:/rails/storage db: image: postgres:16-alpine environment: POSTGRES_USER: ${DB_USER:?required} POSTGRES_PASSWORD: ${DB_PASSWORD:?required} POSTGRES_DB: moyasar_storage_production healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 5 volumes: - postgres_data:/var/lib/postgresql/data minio: image: minio/minio:latest ports: - "127.0.0.1:9000:9000" - "127.0.0.1:9001:9001" environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER:?required} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:?required} command: server /data --console-address ":9001" volumes: - minio_data:/data ftpd: image: stilliard/pure-ftpd:hardened ports: - "127.0.0.1:21:21" - "127.0.0.1:30000-30009:30000-30009" environment: PUBLICHOST: "localhost" FTP_USER_NAME: ${FTP_USER_NAME:?required} FTP_USER_PASS: ${FTP_USER_PASS:?required} FTP_USER_HOME: /home/ftpusers/${FTP_USER_NAME:?required} volumes: - ftpd_data:/home/ftpusers volumes: postgres_data: minio_data: ftpd_data: rails_storage: