All checks were successful
Build and Publish Docker Image / build (push) Successful in 50s
50 lines
974 B
Docker
50 lines
974 B
Docker
FROM python:3.13-slim AS base
|
|
|
|
FROM base AS builder
|
|
|
|
ARG DEBIAN_FRONTEND="noninteractive"
|
|
|
|
RUN pip install poetry==1.8.3
|
|
|
|
ENV PYTHONUNBUFFERED=1 \
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONPATH=/app \
|
|
POETRY_NO_INTERACTION=1 \
|
|
POETRY_VIRTUALENVS_IN_PROJECT=1 \
|
|
POETRY_VIRTUALENVS_CREATE=1 \
|
|
POETRY_CACHE_DIR=/tmp/poetry_cache
|
|
|
|
WORKDIR /app
|
|
|
|
COPY pyproject.toml poetry.lock ./
|
|
|
|
RUN poetry install --without dev --no-root --compile
|
|
|
|
FROM base
|
|
|
|
RUN apt update \
|
|
&& apt dist-upgrade -y \
|
|
&& apt install -y --no-install-recommends \
|
|
libpango-1.0-0 \
|
|
libpangoft2-1.0-0 \
|
|
libharfbuzz-subset0 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN adduser --system --uid 1000 --group app
|
|
USER app
|
|
|
|
WORKDIR /app
|
|
|
|
ENV VIRTUAL_ENV=/app/.venv \
|
|
PATH="/app/.venv/bin:$PATH"
|
|
|
|
COPY --from=builder ${VIRTUAL_ENV} ${VIRTUAL_ENV}
|
|
|
|
COPY app.py ./
|
|
|
|
ARG PORT=8080
|
|
ENV PORT=$PORT
|
|
EXPOSE $PORT
|
|
|
|
CMD ["sh", "-c", "exec fastapi run app.py --proxy-headers --port ${PORT}"]
|