teufa/Dockerfile

72 lines
1.2 KiB
Docker
Raw Normal View History

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
2025-01-12 13:09:43 -07:00
CMD ["teufa", "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
2025-01-12 13:09:43 -07:00
CMD ["teufa", "server"]