From f00551b2d1ae92f6224349a793b187359c8783ab Mon Sep 17 00:00:00 2001 From: Noloquideus Date: Mon, 11 May 2026 12:43:49 +0300 Subject: [PATCH] chore: add docker --- Dockerfile | 28 ++++++++++++++++++++++++++++ docker-compose.yml | 17 +++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..06c8580 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +FROM ghcr.io/astral-sh/uv:python3.12-bookworm AS builder + +WORKDIR /app + +# Install dependencies (cached layer) +COPY pyproject.toml uv.lock ./ +RUN uv sync --frozen --no-dev + +# Copy source last (fast rebuilds) +COPY src ./src + + +FROM ghcr.io/astral-sh/uv:python3.12-bookworm AS runtime + +WORKDIR /app + +# Use the virtualenv created by `uv sync` in builder +COPY --from=builder /app/.venv /app/.venv +COPY --from=builder /app/src /app/src + +ENV PATH="/app/.venv/bin:$PATH" \ + PYTHONUNBUFFERED=1 \ + PYTHONDONTWRITEBYTECODE=1 \ + PYTHONPATH=/app + +EXPOSE 8000 + +CMD ["sh", "-c", "granian --interface asgi ${APP_MODULE:-src.main:app} --host ${APP_HOST:-0.0.0.0} --port ${APP_PORT:-8000} --workers ${APP_WORKERS:-1} --loop uvloop"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3c6e336 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +services: + kyc: + container_name: kyc + build: + context: . + dockerfile: Dockerfile + ports: + - "7000:7000" + environment: + PYTHONUNBUFFERED: "1" + APP_MODULE: "src.main:app" + APP_HOST: "0.0.0.0" + APP_PORT: "8000" + APP_WORKERS: "1" + env_file: + - .env + restart: no \ No newline at end of file