16 lines
700 B
Docker
16 lines
700 B
Docker
FROM python:3.12-slim-bookworm AS base
|
|
ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PIP_NO_CACHE_DIR=1
|
|
WORKDIR /app
|
|
COPY pyproject.toml ./
|
|
COPY src ./src
|
|
FROM base AS test
|
|
RUN pip install . pytest ruff httpx2
|
|
COPY tests ./tests
|
|
RUN ruff check src tests && pytest -q
|
|
FROM base AS runtime
|
|
RUN pip install . && addgroup --system app && adduser --system --ingroup app app && mkdir -p /data/assets && chown -R app:app /data
|
|
USER app
|
|
EXPOSE 8000
|
|
HEALTHCHECK --interval=10s --timeout=3s --start-period=15s --retries=6 CMD ["python","-c","import urllib.request;urllib.request.urlopen('http://127.0.0.1:8000/health',timeout=2)"]
|
|
CMD ["uvicorn","poster_studio.main:app","--host","0.0.0.0","--port","8000"]
|