FROM python:3.9-slim WORKDIR /app # Install system dependencies RUN apt-get update && apt-get install -y \ gcc \ g++ \ && rm -rf /var/lib/apt/lists/* # Copy requirements first for better caching COPY requirements.txt . # Install Python dependencies RUN pip install --no-cache-dir -r requirements.txt # Copy application code COPY . . # Create .streamlit directory and config RUN mkdir -p ~/.streamlit/ RUN echo "\ [general]\n\ email = \"\"\n\ " > ~/.streamlit/credentials.toml RUN echo "\ [server]\n\ headless = true\n\ enableCORS=false\n\ port = 8501\n\ " > ~/.streamlit/config.toml # Expose port EXPOSE 8501 # Health check HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health # Run the application CMD ["streamlit", "run", "app.py", "--server.address=0.0.0.0"] # docker-compose.yml for easy deployment version: '3.8' services: data-analysis-platform: build: . ports: - "8501:8501" environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - GOOGLE_API_KEY=${GOOGLE_API_KEY} volumes: - ./data:/app/data - ./exports:/app/exports restart: unless-stopped mem_limit: 2g mem_reservation: 1g