2024-05-17 21:42:13 -06:00
|
|
|
# syntax=docker/dockerfile:1
|
|
|
|
|
|
|
|
## base image
|
2025-01-11 15:24:44 -07:00
|
|
|
FROM python:3.13-slim AS base
|
2024-05-17 21:42:13 -06:00
|
|
|
|
|
|
|
ENV PYTHONUNBUFFERED=1 \
|
|
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
2025-01-11 14:17:42 -07:00
|
|
|
VENV_PATH="/opt/app/.venv" \
|
2024-05-17 21:50:15 -06:00
|
|
|
APP_HOME="/opt/app"
|
2025-01-11 14:17:42 -07:00
|
|
|
ENV PATH="$VENV_PATH/bin:$PATH"
|
2024-05-17 21:42:13 -06:00
|
|
|
ENV VIRTUAL_ENV=$VENV_PATH
|
|
|
|
|
2024-05-19 17:27:08 -06:00
|
|
|
RUN set -ex \
|
|
|
|
&& apt-get update \
|
|
|
|
&& apt-get install --no-install-recommends -y \
|
|
|
|
libpq5 \
|
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
2024-05-17 21:42:13 -06:00
|
|
|
|
|
|
|
## builder-base image
|
2025-01-11 14:17:42 -07:00
|
|
|
FROM base AS builder-base
|
2024-05-19 17:29:28 -06:00
|
|
|
RUN apt-get update && \
|
|
|
|
apt-get install --no-install-recommends -y \
|
2024-05-17 21:42:13 -06:00
|
|
|
curl \
|
2024-05-19 17:27:08 -06:00
|
|
|
build-essential \
|
|
|
|
libpq-dev \
|
|
|
|
python3-dev \
|
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
2024-05-17 21:42:13 -06:00
|
|
|
|
2025-01-11 14:17:42 -07:00
|
|
|
COPY --from=ghcr.io/astral-sh/uv:0.5.18 /uv /uvx /bin/
|
2024-05-17 21:42:13 -06:00
|
|
|
|
2024-05-17 21:50:15 -06:00
|
|
|
WORKDIR $APP_HOME
|
2025-01-11 15:09:40 -07:00
|
|
|
COPY . .
|
2024-05-17 21:42:13 -06:00
|
|
|
|
2025-01-11 14:17:42 -07:00
|
|
|
RUN uv sync --frozen
|
2024-05-17 21:42:13 -06:00
|
|
|
|
|
|
|
|
|
|
|
## dev image
|
2025-01-11 14:17:42 -07:00
|
|
|
FROM base AS dev
|
2024-05-17 21:42:13 -06:00
|
|
|
|
2024-05-17 21:50:15 -06:00
|
|
|
COPY --from=builder-base $APP_HOME $APP_HOME
|
2025-01-11 14:17:42 -07:00
|
|
|
COPY --from=ghcr.io/astral-sh/uv:0.5.18 /uv /uvx /bin/
|
2024-05-17 21:42:13 -06:00
|
|
|
|
2024-05-17 21:50:15 -06:00
|
|
|
WORKDIR $APP_HOME
|
2024-05-17 21:42:13 -06:00
|
|
|
|
2025-01-11 16:36:20 -07:00
|
|
|
RUN uv sync --frozen --dev
|
2024-05-17 21:42:13 -06:00
|
|
|
|
|
|
|
EXPOSE 8000
|
|
|
|
|
2024-05-22 23:37:33 -06:00
|
|
|
ENTRYPOINT ["teufa"]
|
|
|
|
CMD ["server", "--dev"]
|
2024-05-17 21:42:13 -06:00
|
|
|
|
|
|
|
|
2024-05-17 21:50:15 -06:00
|
|
|
## ci image
|
2025-01-11 14:17:42 -07:00
|
|
|
FROM base AS ci
|
2024-05-17 21:50:15 -06:00
|
|
|
|
|
|
|
COPY --from=builder-base $APP_HOME $APP_HOME
|
2025-01-11 14:17:42 -07:00
|
|
|
COPY --from=ghcr.io/astral-sh/uv:0.5.18 /uv /uvx /bin/
|
2024-05-17 21:50:15 -06:00
|
|
|
|
|
|
|
WORKDIR $APP_HOME
|
|
|
|
|
2025-01-11 14:17:42 -07:00
|
|
|
RUN uv sync --frozen --group=test
|
2024-05-17 21:50:15 -06:00
|
|
|
|
|
|
|
|
2024-05-17 21:42:13 -06:00
|
|
|
## prod image
|
2025-01-11 14:17:42 -07:00
|
|
|
FROM base AS prod
|
2024-05-17 21:42:13 -06:00
|
|
|
|
|
|
|
COPY --from=builder-base /opt/app /opt/app
|
|
|
|
|
2024-05-17 21:50:15 -06:00
|
|
|
WORKDIR $APP_HOME
|
|
|
|
|
2024-05-22 23:37:33 -06:00
|
|
|
ENTRYPOINT ["teufa"]
|
|
|
|
CMD ["server"]
|