| 1234567891011121314151617181920212223242526272829303132 |
- FROM ghcr.io/astral-sh/uv:0.11.30@sha256:93b61e21202b1dab861092748e46bbd6e0e41dd84f59b9174efd2353186e1b47 AS uv
- FROM python:3.12-slim-bookworm@sha256:392307d22300de8b5986851a12d9176dfc0fc073e65bf6523ebd7dcbeb23564e AS builder
- COPY --from=uv /uv /usr/local/bin/uv
- WORKDIR /app
- ENV UV_PYTHON_DOWNLOADS=never UV_LINK_MODE=copy TMPDIR=/app/.work
- RUN mkdir /app/.work
- COPY pyproject.toml uv.lock ./
- ARG DEPENDENCY_GROUP=runtime
- RUN --mount=type=cache,target=/root/.cache/uv \
- if [ "$DEPENDENCY_GROUP" = inference ]; then \
- uv sync --locked --no-default-groups --group inference --no-install-project; \
- elif [ "$DEPENDENCY_GROUP" = runtime ]; then \
- uv sync --locked --no-default-groups --no-install-project; \
- else exit 1; fi
- COPY src/ src/
- RUN --mount=type=cache,target=/root/.cache/uv \
- if [ "$DEPENDENCY_GROUP" = inference ]; then \
- uv sync --locked --no-default-groups --group inference --no-editable; \
- else uv sync --locked --no-default-groups --no-editable; fi
- FROM python:3.12-slim-bookworm@sha256:392307d22300de8b5986851a12d9176dfc0fc073e65bf6523ebd7dcbeb23564e AS runtime
- RUN useradd --uid 10001 --create-home app
- WORKDIR /app
- ENV PATH=/app/.venv/bin:$PATH PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1 TMPDIR=/app/.work
- COPY --from=builder /app/.venv /app/.venv
- COPY alembic.ini oms-alembic.ini ./
- COPY migrations/ migrations/
- COPY oms_migrations/ oms_migrations/
- RUN mkdir /app/.work && chown app:app /app/.work
- USER 10001:10001
- EXPOSE 8000
- CMD ["uvicorn", "zhifu.app:create_app", "--factory", "--host", "0.0.0.0", "--port", "8000", "--timeout-graceful-shutdown", "60"]
|