From a0fdd0f51cd62a6e9207dbed43648eaa84b10457 Mon Sep 17 00:00:00 2001 From: agatha Date: Sun, 15 Mar 2026 15:30:00 -0400 Subject: [PATCH] build: add production and test Dockerfiles --- Dockerfile | 30 ++++++++++++++++++++++++++++++ Dockerfile.test | 17 +++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 Dockerfile create mode 100644 Dockerfile.test diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..243e520 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS builder + +WORKDIR /app +ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy + +COPY pyproject.toml uv.lock ./ +RUN --mount=type=cache,target=/root/.cache/uv \ + uv sync --frozen --no-install-project --no-dev + +COPY src/ src/ +COPY alembic/ alembic/ +COPY alembic.ini . +RUN --mount=type=cache,target=/root/.cache/uv \ + uv sync --frozen --no-dev + + +FROM python:3.12-slim-bookworm + +WORKDIR /app + +COPY --from=builder /app/.venv /app/.venv +COPY --from=builder /app/alembic /app/alembic +COPY --from=builder /app/alembic.ini /app/alembic.ini + +ENV PATH="/app/.venv/bin:$PATH" + +EXPOSE 8000 + +CMD ["uvicorn", "proxy_pool.app:create_app", \ + "--factory", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file diff --git a/Dockerfile.test b/Dockerfile.test new file mode 100644 index 0000000..bdaba0a --- /dev/null +++ b/Dockerfile.test @@ -0,0 +1,17 @@ +FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim + +WORKDIR /app +ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy + +COPY pyproject.toml uv.lock ./ +RUN --mount=type=cache,target=/root/.cache/uv \ + uv sync --frozen --no-install-project + +COPY src/ src/ +COPY tests/ tests/ +COPY alembic/ alembic/ +COPY alembic.ini . +RUN --mount=type=cache,target=/root/.cache/uv \ + uv sync --frozen + +CMD ["pytest"] \ No newline at end of file