# Production Dockerfile for Marine Pollution Detection API # Optimized for deployment with only necessary files included FROM python:3.11-slim # Set working directory WORKDIR /app # Set environment variables ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV PORT=7860 # Create a non-root user for security RUN useradd --create-home --shell /bin/bash app # Install system dependencies RUN apt-get update && apt-get install -y \ build-essential \ curl \ && rm -rf /var/lib/apt/lists/* # Copy only the requirements file first for better caching COPY requirements.txt . # Install Python dependencies RUN pip install --no-cache-dir --upgrade pip RUN pip install --no-cache-dir -r requirements.txt # Copy only the necessary application files (explicitly excluding test files) COPY app/ /app/app/ COPY models/ /app/models/ COPY start-hf.sh /app/ COPY Procfile /app/ COPY Procfile.railway /app/ # Create necessary directories with proper permissions RUN mkdir -p app/uploads /tmp/uploads && \ chown -R app:app /app /tmp/uploads && \ chmod -R 755 /app /tmp/uploads # Make startup script executable RUN chmod +x start-hf.sh && chown app:app start-hf.sh # Switch to non-root user USER app # Expose port 7860 (Hugging Face Spaces default) EXPOSE 7860 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost:7860/health || exit 1 # Command to run the application CMD ["./start-hf.sh"]