2024-12-13 02:07:29 +08:00
|
|
|
FROM python:3.11-bookworm AS metadata-stage
|
|
|
|
|
|
|
|
|
|
WORKDIR /tmp
|
|
|
|
|
|
|
|
|
|
RUN --mount=type=bind,source=./.git/,target=/tmp/.git/ \
|
|
|
|
|
git describe --tags --exact-match > /tmp/VERSION 2>/dev/null \
|
|
|
|
|
|| git rev-parse --short HEAD > /tmp/VERSION \
|
|
|
|
|
&& echo "Building version: $(cat /tmp/VERSION)"
|
|
|
|
|
|
|
|
|
|
FROM python:3.11-slim-bookworm
|
2024-08-14 13:35:03 +08:00
|
|
|
|
|
|
|
|
WORKDIR /app/zhenxun
|
|
|
|
|
|
2024-12-13 02:07:29 +08:00
|
|
|
ENV TZ=Asia/Shanghai PYTHONUNBUFFERED=1
|
2024-08-14 13:35:03 +08:00
|
|
|
|
2024-12-13 02:07:29 +08:00
|
|
|
EXPOSE 8080
|
2024-09-02 23:12:27 +08:00
|
|
|
|
2026-04-18 23:42:10 +08:00
|
|
|
# 安装 uv
|
|
|
|
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
|
|
|
|
|
2024-12-13 02:07:29 +08:00
|
|
|
RUN apt update && \
|
|
|
|
|
apt install -y --no-install-recommends curl fontconfig fonts-noto-color-emoji \
|
|
|
|
|
&& apt clean \
|
|
|
|
|
&& fc-cache -fv \
|
|
|
|
|
&& apt-get purge -y --auto-remove curl \
|
|
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
2024-08-14 13:35:03 +08:00
|
|
|
|
2026-04-18 23:42:10 +08:00
|
|
|
# 先复制依赖声明文件,利用 Docker layer cache
|
|
|
|
|
COPY pyproject.toml uv.lock ./
|
2024-08-14 13:35:03 +08:00
|
|
|
|
2026-04-18 23:42:10 +08:00
|
|
|
# 安装依赖(--frozen 锁定版本,--no-install-project 不安装本项目,--no-dev 不安装开发依赖)
|
|
|
|
|
RUN uv sync --frozen --no-install-project --no-dev
|
|
|
|
|
|
|
|
|
|
# 复制应用代码
|
|
|
|
|
COPY . .
|
2024-08-14 13:35:03 +08:00
|
|
|
|
2026-04-18 23:42:10 +08:00
|
|
|
# 安装 Playwright 和 Chromium
|
|
|
|
|
RUN uv run playwright install --with-deps chromium \
|
2024-12-13 02:07:29 +08:00
|
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/*
|
2024-08-14 13:35:03 +08:00
|
|
|
|
2024-12-13 02:07:29 +08:00
|
|
|
COPY --from=metadata-stage /tmp/VERSION /app/VERSION
|
2024-09-02 23:12:27 +08:00
|
|
|
|
2024-12-13 02:07:29 +08:00
|
|
|
VOLUME ["/app/zhenxun/data", "/app/zhenxun/resources", "/app/zhenxun/log"]
|
2024-08-14 13:35:03 +08:00
|
|
|
|
2026-04-18 23:42:10 +08:00
|
|
|
CMD ["uv", "run", "zx", "run"]
|