teufa/Dockerfile
Brian Rosner 5032064989
Some checks failed
CI / Static Analysis (pre-commit) (push) Successful in 1m9s
CI / Tests (push) Successful in 1m2s
CI / Build and push image (push) Failing after 55s
feature/update-build-deps (#3)
Reviewed-on: http://brosner.dev/brosner/teufa/pulls/3
2025-05-26 02:09:50 +00:00

72 lines
1.2 KiB
Docker

# syntax=docker/dockerfile:1
## base image
FROM python:3.13-slim AS base
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
VENV_PATH="/opt/app/.venv" \
APP_HOME="/opt/app"
ENV PATH="$VENV_PATH/bin:$PATH"
ENV VIRTUAL_ENV=$VENV_PATH
RUN set -ex \
&& apt-get update \
&& apt-get install --no-install-recommends -y \
libpq5 \
&& rm -rf /var/lib/apt/lists/*
## builder-base image
FROM base AS builder-base
RUN apt-get update && \
apt-get install --no-install-recommends -y \
curl \
build-essential \
libpq-dev \
python3-dev \
&& rm -rf /var/lib/apt/lists/*
COPY --from=ghcr.io/astral-sh/uv:0.7 /uv /uvx /bin/
WORKDIR $APP_HOME
COPY . .
RUN uv sync --frozen
## dev image
FROM base AS dev
COPY --from=builder-base $APP_HOME $APP_HOME
COPY --from=ghcr.io/astral-sh/uv:0.7 /uv /uvx /bin/
WORKDIR $APP_HOME
RUN uv sync --frozen --dev
EXPOSE 8000
CMD ["teufa", "server", "--dev"]
## ci image
FROM base AS ci
COPY --from=builder-base $APP_HOME $APP_HOME
COPY --from=ghcr.io/astral-sh/uv:0.7 /uv /uvx /bin/
WORKDIR $APP_HOME
RUN uv sync --frozen --group=test
## prod image
FROM base AS prod
COPY --from=builder-base /opt/app /opt/app
WORKDIR $APP_HOME
CMD ["teufa", "server"]