| | |
| | |
| | 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"] |
| |
|