Skip to content

Instantly share code, notes, and snippets.

@badri
Created October 10, 2025 03:54
Show Gist options
  • Save badri/d198c94da28eae987cc2333b2f168d41 to your computer and use it in GitHub Desktop.
Save badri/d198c94da28eae987cc2333b2f168d41 to your computer and use it in GitHub Desktop.
Python dockerfile
FROM python:3.12-slim
# Set working directory
WORKDIR /app
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
# Install system dependencies
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
gcc \
g++ \
libffi-dev \
libssl-dev \
&& rm -rf /var/lib/apt/lists/*
# Copy requirements first for better caching
COPY requirements.txt .
# Install Python dependencies
RUN pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir -r requirements.txt
# Copy application code
COPY . .
# Create non-root user
RUN adduser --disabled-password --gecos '' appuser \
&& chown -R appuser:appuser /app
USER appuser
# Expose port
EXPOSE 8000
# Health check(optional)
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8000/health || exit 1
# Run the application
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment