FarmerHelp / Dockerfile
Gankit12's picture
Res
75fda81
Raw
History Blame Contribute Delete
2.16 kB
# FarmHelp - Hugging Face Spaces Docker
# Multi-stage: build frontend, then run backend + static SPA on port 7860
# ---------------------------------------------------------------------------
# Stage 1: Frontend build (Vite + React)
# ---------------------------------------------------------------------------
FROM node:20-alpine AS frontend
WORKDIR /app/frontend
COPY frontend/package.json frontend/package-lock.json ./
RUN npm ci
COPY frontend/ ./
# Same-origin API in production (backend serves both API and static)
ENV VITE_API_BASE_URL=""
RUN npm run build
# ---------------------------------------------------------------------------
# Stage 2: Backend + static files
# ---------------------------------------------------------------------------
FROM python:3.10-slim
WORKDIR /app/backend
# System deps
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
&& rm -rf /var/lib/apt/lists/*
# Python dependencies
COPY backend/requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# Backend application
COPY backend/ ./
# Frontend build from stage 1
COPY --from=frontend /app/frontend/dist /app/static
# ---------------------------------------------------------------------------
# Environment variables (Hugging Face / production)
# Override via HF Space Secrets or Docker run -e if needed.
# ---------------------------------------------------------------------------
ENV PORT=7860
ENV ENVIRONMENT=production
ENV STATIC_DIR=/app/static
# Database URL will be set by start.sh based on available storage
ENV DATABASE_URL=sqlite:////app/backend/farmhelp.db
ENV LOG_LEVEL=INFO
ENV LOG_FILE=/app/backend/logs/app.log
ENV RATE_LIMIT_PER_MINUTE=60
ENV WEATHER_CACHE_HOURS=6
ENV MANDI_CACHE_HOURS=24
ENV CORS_ORIGINS='["*"]'
ENV OPEN_METEO_API_URL=https://api.open-meteo.com/v1/forecast
ENV DATA_GOV_IN_API_URL=https://api.data.gov.in/resource
ENV DATA_GOV_IN_API_KEY=""
ENV DEBUG=false
ENV APP_NAME="Farm Help API"
ENV APP_VERSION=1.0.0
EXPOSE 7860
# Make startup script executable (already copied with backend/)
RUN chmod +x /app/backend/start.sh
# Run startup script
CMD ["/app/backend/start.sh"]