# Use a more recent, slim Python base image FROM python:3.10-slim # Set the working directory in the container WORKDIR /app # Prevent Python from writing pyc files to disc (optional) ENV PYTHONDONTWRITEBYTECODE 1 # Ensure Python output is sent straight to terminal (useful for logs) ENV PYTHONUNBUFFERED 1 # Upgrade pip RUN python -m pip install --upgrade pip # Copy the requirements file into the container COPY requirements.txt . # Install dependencies # --no-cache-dir reduces image size # --default-timeout=100 increases timeout for pip install RUN pip install --no-cache-dir -r requirements.txt COPY .env . # Copy the application code into the container # This includes the API file and the core logic directory COPY api.py . COPY ./kig_core ./kig_core # Command to run the Uvicorn server # It will look for an object named 'app' in the 'api.py' file # Runs on port 8000 and listens on all interfaces (0.0.0.0) # Note: For production, consider removing --reload CMD ["uvicorn", "api:app", "--host", "0.0.0.0", "--port", "7860"] # --- Notes --- # Environment Variables: # This Dockerfile assumes you will provide necessary environment variables # (NEO4J_URI, NEO4J_PASSWORD, GEMINI_API_KEY, OPENAI_API_KEY, etc.) # when running the container, for example using 'docker run -e VAR=value ...' # or a docker-compose.yml file. # DO NOT hardcode secrets directly in the Dockerfile. # # Cache Folders: # Removed HF_HOME/TORCH_HOME as this app primarily uses external APIs (Gemini/OpenAI) # and Neo4j, not local Hugging Face/PyTorch models needing specific cache dirs.