From c8df2b3cc26d28b919d063b3725cc0a4dbb0a1e0 Mon Sep 17 00:00:00 2001 From: Azide Date: Thu, 19 Dec 2024 23:55:12 +0800 Subject: [PATCH] =?UTF-8?q?:construction:=20=E9=87=8D=E5=86=99=20Dockerfil?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/Dockerfile | 45 +++++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 8de4362..eafb22e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,16 +1,33 @@ -FROM node:22.11.0 AS frontend -ADD . /app -WORKDIR /app/admin-frontend -RUN npm install -g pnpm -RUN pnpm install && pnpm build +# syntax=docker/dockerfile:1.10 +FROM python:3.12-slim-bookworm AS builder +COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ + +ENV UV_COMPILE_BYTECODE=1 -FROM python:3.11 -RUN python3 -m pip install poetry && poetry config virtualenvs.create false WORKDIR /app -COPY ./README.md ./pyproject.toml ./poetry.lock* /app/ -RUN poetry install --only=main,docker -ADD src /app/src -ADD bot.py /app/ -COPY --from=frontend /app/nonebot_bison/admin_page/dist /app/nonebot_bison/admin_page/dist -ENV HOST=0.0.0.0 -CMD ["nb", "run"] +RUN --mount=type=cache,target=/root/.cache/uv \ + --mount=type=bind,source=uv.lock,target=uv.lock \ + --mount=type=bind,source=pyproject.toml,target=pyproject.toml \ + uv sync --frozen --no-install-project --no-editable + +ADD . /app/ + +RUN --mount=type=cache,target=/var/cache/apt \ + --mount=type=cache,target=/var/lib/apt \ + apt-get update && apt-get install -y xvfb fonts-noto-color-emoji fonts-unifont \ + libfontconfig1 libfreetype6 xfonts-scalable fonts-liberation \ + fonts-ipafont-gothic fonts-wqy-zenhei fonts-tlwg-loma-otf \ + fonts-liberation libasound2 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 \ + libcairo2 libcups2 libdbus-1-3 libdrm2 libegl1 libgbm1 libglib2.0-0 libgtk-3-0 \ + libnspr4 libnss3 libpango-1.0-0 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 \ + libxdamage1 libxext6 libxfixes3 libxrandr2 libxshmfence1 vim + +RUN --mount=type=cache,target=/root/.cache/uv \ + uv sync --no-dev --frozen --no-editable --extra=docker + +RUN uv run playwright install chromium &&\ + mv docker.env.prod .env.prod && \ + nb adapter install nonebot-adapter-red && \ + nb adapter install nonebot-adapter-qq + +CMD ["uv", "run", "nb", "run"]