mirror of
https://github.com/ferdzo/iotDashboard.git
synced 2026-04-05 01:06:24 +00:00
50 lines
1.1 KiB
Docker
50 lines
1.1 KiB
Docker
# Django Backend Dockerfile
|
|
FROM ghcr.io/astral-sh/uv:python3.13-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
ENV UV_COMPILE_BYTECODE=1
|
|
|
|
# Copy dependency files
|
|
COPY pyproject.toml uv.lock ./
|
|
|
|
# Install dependencies
|
|
RUN uv sync --frozen --no-dev --no-install-project
|
|
|
|
# Copy application code
|
|
COPY iotDashboard/ ./iotDashboard/
|
|
COPY manage.py ./
|
|
COPY create_user.py ./
|
|
|
|
# Sync the project
|
|
RUN uv sync --frozen --no-dev
|
|
|
|
|
|
# Stage 2: Runtime
|
|
FROM python:3.13-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# Install runtime dependencies
|
|
RUN apk add --no-cache postgresql-client
|
|
|
|
# Copy virtual environment and application
|
|
COPY --from=builder /app/.venv /app/.venv
|
|
COPY --from=builder /app/iotDashboard/ /app/iotDashboard/
|
|
COPY --from=builder /app/manage.py /app/
|
|
COPY --from=builder /app/create_user.py /app/
|
|
|
|
# Create non-root user
|
|
RUN adduser -D -u 1000 appuser && \
|
|
chown -R appuser:appuser /app
|
|
|
|
USER appuser
|
|
|
|
ENV PATH="/app/.venv/bin:$PATH"
|
|
ENV PYTHONUNBUFFERED=1
|
|
|
|
EXPOSE 3000
|
|
|
|
# Run Django with uvicorn for ASGI
|
|
CMD ["python", "-m", "uvicorn", "iotDashboard.asgi:application", "--host", "0.0.0.0", "--port", "3000"]
|