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