43 lines
925 B
Docker
43 lines
925 B
Docker
|
|
FROM python:3.13-slim-bookworm AS base
|
||
|
|
|
||
|
|
RUN apt-get update \
|
||
|
|
&& apt-get install -y --no-install-recommends libpq5 \
|
||
|
|
&& rm -rf /var/lib/apt/lists/*
|
||
|
|
|
||
|
|
COPY --from=ghcr.io/astral-sh/uv:0.10.11 /uv /usr/local/bin/uv
|
||
|
|
|
||
|
|
WORKDIR /app
|
||
|
|
|
||
|
|
ENV UV_COMPILE_BYTECODE=1 \
|
||
|
|
UV_LINK_MODE=copy \
|
||
|
|
PYTHONUNBUFFERED=1 \
|
||
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
||
|
|
PATH="/app/.venv/bin:$PATH"
|
||
|
|
|
||
|
|
COPY pyproject.toml uv.lock ./
|
||
|
|
RUN uv sync --frozen --no-dev --no-install-project
|
||
|
|
|
||
|
|
FROM base AS runtime
|
||
|
|
|
||
|
|
COPY . .
|
||
|
|
RUN uv sync --frozen --no-dev \
|
||
|
|
&& sed -i 's/\r$//' /app/scripts/startup.sh \
|
||
|
|
&& chmod +x /app/scripts/startup.sh \
|
||
|
|
&& useradd --create-home --uid 1000 app \
|
||
|
|
&& chown -R app:app /app
|
||
|
|
|
||
|
|
USER app
|
||
|
|
EXPOSE 8000
|
||
|
|
|
||
|
|
CMD ["/app/scripts/startup.sh"]
|
||
|
|
|
||
|
|
FROM base AS test
|
||
|
|
|
||
|
|
COPY . .
|
||
|
|
RUN uv sync --frozen --extra test \
|
||
|
|
&& useradd --create-home --uid 1000 app \
|
||
|
|
&& chown -R app:app /app
|
||
|
|
|
||
|
|
USER app
|
||
|
|
CMD ["pytest", "tests", "-ra"]
|