Spaces:
Sleeping
Sleeping
| # Use a slim Python base image for efficiency | |
| FROM python:3.10-slim-buster | |
| # Set the working directory inside the container | |
| WORKDIR /app | |
| # Copy the requirements.txt file first to leverage Docker's build cache. | |
| COPY requirements.txt . | |
| # Install Python dependencies (ensure gunicorn is listed here) | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # Install Nginx and other necessary packages | |
| RUN apt-get update && apt-get install -y nginx && \ | |
| rm -rf /var/lib/apt/lists/* | |
| # Create and set permissions for all Nginx cache/temp directories needed. | |
| # Nginx typically runs as the 'www-data' user, which needs write access. | |
| RUN mkdir -p /tmp/nginx_cache/client_body && \ | |
| mkdir -p /tmp/nginx_cache/proxy && \ | |
| chown -R www-data:www-data /tmp/nginx_cache && \ | |
| chmod -R 755 /tmp/nginx_cache | |
| # Copy the entire project directory into the container's /app directory. | |
| COPY . . | |
| # Replace the default Nginx configuration with your custom one. | |
| # This nginx.conf MUST be updated as shown in Step 3 to use the new paths and logging. | |
| COPY nginx.conf /etc/nginx/nginx.conf | |
| # Grant execution permissions to the start.sh script | |
| RUN chmod +x start.sh | |
| # Expose the port Nginx is configured to listen on (7860 for Hugging Face Spaces) | |
| EXPOSE 7860 | |
| # Define the command to run when the container starts. | |
| CMD ["./start.sh"] |