File size: 847 Bytes
ebdfd3b dc2650a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | FROM python:3.11
# 安装 Node.js (满足 >=18)及必要工具
RUN apt-get update \
&& apt-get install -y --no-install-recommends nodejs npm \
&& rm -rf /var/lib/apt/lists/*
# 从 uv 官方镜像复制 uv
COPY --from=ghcr.io/astral-sh/uv:0.9.26 /uv /uvx /bin/
WORKDIR /app
# 先复制依赖描述文件以利用缓存
COPY frontend/package.json frontend/package-lock.json ./frontend/
COPY backend/pyproject.toml backend/uv.lock ./backend/
# 安装依赖(Node + Python)
RUN npm ci --prefix frontend \
&& cd backend && uv sync --frozen --no-dev
# 复制项目源码
COPY . .
# 构建前端静态资源
RUN npm run build --prefix frontend
ENV FLASK_HOST=0.0.0.0 \
FLASK_PORT=7860 \
FLASK_DEBUG=false
EXPOSE 7860
# 启动后端并托管前端静态文件
CMD ["sh", "-lc", "cd /app/backend && .venv/bin/python run.py"]
|