| |
| |
| FROM python:3.11-slim-bookworm as builder |
|
|
| |
| |
| RUN apt-get update && apt-get install -y \ |
| build-essential \ |
| libpq-dev \ |
| curl \ |
| --no-install-recommends && \ |
| rm -rf /var/lib/apt/lists/* |
|
|
| WORKDIR /app |
|
|
| COPY requirements.txt . |
|
|
| |
| RUN grep -v "pytest" requirements.txt > requirements-prod.txt |
|
|
| |
| ENV PIP_DEFAULT_TIMEOUT=1000 |
|
|
| |
| RUN pip install --no-cache-dir --user -r requirements-prod.txt |
|
|
|
|
| |
| FROM python:3.11-slim-bookworm |
|
|
| |
| RUN apt-get update && apt-get install -y \ |
| curl \ |
| libpq5 \ |
| --no-install-recommends && \ |
| rm -rf /var/lib/apt/lists/* |
|
|
| |
| RUN addgroup --system appgroup --gid 1001 && \ |
| adduser --system appuser --uid 1001 --ingroup appgroup |
|
|
| WORKDIR /app |
|
|
| |
| COPY --from=builder /root/.local /home/appuser/.local |
|
|
| |
| COPY --chown=appuser:appgroup ./src /app/src |
| COPY --chown=appuser:appgroup ./scripts /app/scripts |
| COPY --chown=appuser:appgroup ./alembic /app/alembic |
| COPY --chown=appuser:appgroup ./alembic.ini /app/alembic.ini |
|
|
| |
| RUN chown -R appuser:appgroup /home/appuser |
|
|
| |
| RUN mkdir -p /app/data /app/uploads /home/appuser/.cache && chown -R appuser:appgroup /app/data /app/uploads /home/appuser/.cache |
|
|
| |
| RUN chmod +x /app/scripts/*.sh |
|
|
| |
| USER appuser |
|
|
| |
| ENV PATH="/home/appuser/.local/bin:${PATH}" |
| ENV PYTHONPATH="/home/appuser/.local/lib/python3.11/site-packages" |
| ENV HF_HOME="/home/appuser/.cache" |
|
|
| |
| EXPOSE 8000 |
|
|
| |
| |
| CMD ["/app/scripts/init-db.sh"] |
|
|