version: '3.8' services: server: build: context: ./server ports: - "${PORT:-3005}:3000" environment: PORT: 3000 PLANT_DB_PATH: /data/greenlns.sqlite MINIO_ENDPOINT: minio MINIO_PORT: 9000 MINIO_USE_SSL: "false" MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin123} MINIO_BUCKET: ${MINIO_BUCKET:-plant-images} # Public URL for MinIO — set this to your Railway MinIO public domain MINIO_PUBLIC_URL: ${MINIO_PUBLIC_URL:-http://localhost:9000} # App secrets (set via Railway env vars) OPENAI_API_KEY: ${OPENAI_API_KEY} STRIPE_SECRET_KEY: ${STRIPE_SECRET_KEY} STRIPE_PUBLISHABLE_KEY: ${STRIPE_PUBLISHABLE_KEY} STRIPE_WEBHOOK_SECRET: ${STRIPE_WEBHOOK_SECRET} JWT_SECRET: ${JWT_SECRET} PLANT_IMPORT_ADMIN_KEY: ${PLANT_IMPORT_ADMIN_KEY} volumes: - db_data:/data depends_on: minio: condition: service_healthy restart: unless-stopped minio: image: minio/minio:latest ports: - "9000:9000" - "9001:9001" environment: MINIO_ROOT_USER: ${MINIO_ACCESS_KEY:-minioadmin} MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY:-minioadmin123} volumes: - minio_data:/data command: server /data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped volumes: db_data: minio_data: