diff --git a/Dockerfile b/Dockerfile index 93775879..af6bcb51 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,10 @@ RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debi && apt-get install -y --no-install-recommends gcc python3-dev \ && rm -rf /var/lib/apt/lists/* +COPY . /fba + +WORKDIR /fba + # Configure uv environment ENV UV_COMPILE_BYTECODE=1 \ UV_NO_CACHE=1 \ @@ -18,30 +22,27 @@ ENV UV_COMPILE_BYTECODE=1 \ # Install dependencies with cache 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-default-groups --group server # === Runtime base server image === FROM python:3.10-slim AS base_server -SHELL ["/bin/bash", "-c"] - RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources \ && apt-get update \ && apt-get install -y --no-install-recommends supervisor \ && rm -rf /var/lib/apt/lists/* -COPY . /fba +COPY --from=builder /fba /fba COPY --from=builder /usr/local /usr/local +COPY deploy/backend/supervisord.conf /etc/supervisor/supervisord.conf + # === FastAPI server image === FROM base_server AS fastapi_server WORKDIR /fba -COPY deploy/backend/supervisord.conf /etc/supervisor/supervisord.conf COPY deploy/backend/fastapi_server.conf /etc/supervisor/conf.d/ RUN mkdir -p /var/log/fastapi_server @@ -53,9 +54,8 @@ CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port","8000"] # === Celery server image === FROM base_server AS celery -WORKDIR /fba/backend/ +WORKDIR /fba/backend -COPY deploy/backend/supervisord.conf /etc/supervisor/supervisord.conf COPY deploy/backend/celery.conf /etc/supervisor/conf.d/ RUN mkdir -p /var/log/celery diff --git a/backend/__init__.py b/backend/__init__.py index 83c65446..de7baea3 100644 --- a/backend/__init__.py +++ b/backend/__init__.py @@ -1,10 +1,9 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- +from backend.utils.console import console __version__ = '1.5.2' -from backend.utils.console import console - def get_version() -> str | None: console.print(f'[cyan]{__version__}[/]')