# 1. 使用更新的官方 Playwright Python 镜像
# v1.54.0-jammy (Ubuntu 22.04) 或 v1.54.0-noble (Ubuntu 24.04, Python 3.12+)
FROM mcr.microsoft.com/playwright/python:v1.54.0-noble

# 2. 设置工作目录
WORKDIR /app

# 3. 设置环境变量
ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    TZ=Asia/Tokyo

# 4. 引入 uv（项目使用 uv workspace + uv.lock 管理依赖）
COPY --from=ghcr.io/astral-sh/uv:0.10.12 /uv /usr/local/bin/uv

# 5. 安装依赖到 /app 之外的独立 venv
#    - venv 放在 /opt/venv：docker-compose 用 `.:/app` 挂载宿主目录，
#      若 venv 落在 /app 下会被卷覆盖，故必须放到 /app 外。
#    - 先只复制依赖清单与 workspace 包，最大化利用构建缓存。
#    - uv sync 会按 uv.lock 安装第三方依赖，并把本地的 surugaya-common 一并装入，
#      从而修复运行时 `ModuleNotFoundError: No module named 'surugaya_common'`。
ENV UV_PROJECT_ENVIRONMENT=/opt/venv \
    UV_LINK_MODE=copy
COPY pyproject.toml uv.lock ./
COPY packages ./packages
RUN uv sync --frozen --no-dev --no-install-project

# 让后续命令与运行时默认使用该 venv
ENV PATH="/opt/venv/bin:$PATH"

# 6. 安装 Playwright 的 Chromium 浏览器内核（确保与 venv 内 playwright 版本匹配）
RUN playwright install chromium

# 7. 复制项目代码
COPY . /app/

# 8. 暴露端口
EXPOSE 31106

# 9. 启动命令
CMD ["python", "-m", "app.main"]
