Created
November 25, 2024 17:26
-
-
Save ajeetraina/63fc5c4d5c367bccd41bab220bccb736 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Stage 1: Base build stage | |
FROM python:3.13-slim AS builder | |
# Create the app directory | |
RUN mkdir /app | |
# Set the working directory | |
WORKDIR /app | |
# Set environment variables to optimize Python | |
ENV PYTHONDONTWRITEBYTECODE=1 | |
ENV PYTHONUNBUFFERED=1 | |
# Upgrade pip and install dependencies | |
RUN pip install --upgrade pip | |
# Copy the requirements file first (better caching) | |
COPY requirements.txt /app/ | |
# Install Python dependencies | |
RUN pip install --no-cache-dir -r requirements.txt | |
# Stage 2: Production stage | |
FROM python:3.13-slim | |
RUN useradd -m -r appuser && \ | |
mkdir /app && \ | |
chown -R appuser /app | |
# Copy the Python dependencies from the builder stage | |
COPY --from=builder /usr/local/lib/python3.13/site-packages/ /usr/local/lib/python3.13/site-packages/ | |
COPY --from=builder /usr/local/bin/ /usr/local/bin/ | |
# Set the working directory | |
WORKDIR /app | |
# Copy application code | |
COPY --chown=appuser:appuser . . | |
# Set environment variables to optimize Python | |
ENV PYTHONDONTWRITEBYTECODE=1 | |
ENV PYTHONUNBUFFERED=1 | |
# Switch to non-root user | |
USER appuser | |
# Expose the application port | |
EXPOSE 8000 | |
# Start the application using Gunicorn | |
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "--workers", "3", "my_docker_django_app.wsgi:application"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment