mirror of
https://github.com/stardrophere/InsightRadar.git
synced 2026-06-05 21:57:50 +08:00
docker配置修改
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
# 前端
|
||||||
|
frontend/dist
|
||||||
|
frontend/node_modules
|
||||||
|
|
||||||
|
# 后端
|
||||||
|
backend/.venv
|
||||||
|
backend/.git
|
||||||
|
backend/__pycache__
|
||||||
|
backend/*.pyc
|
||||||
|
backend/*.pyo
|
||||||
|
backend/*.pyd
|
||||||
|
backend/.pytest_cache
|
||||||
|
backend/.mypy_cache
|
||||||
|
backend/.cache
|
||||||
|
backend/.env
|
||||||
|
backend/*.log
|
||||||
|
backend/dist
|
||||||
|
backend/build
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
.venv
|
|
||||||
.git
|
|
||||||
__pycache__
|
|
||||||
*.pyc
|
|
||||||
*.pyo
|
|
||||||
*.pyd
|
|
||||||
.pytest_cache
|
|
||||||
.mypy_cache
|
|
||||||
.cache
|
|
||||||
.env
|
|
||||||
*.log
|
|
||||||
dist
|
|
||||||
build
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
FROM python:3.11-slim AS builder
|
|
||||||
|
|
||||||
WORKDIR /insightradar
|
|
||||||
|
|
||||||
COPY pyproject.toml uv.lock ./
|
|
||||||
|
|
||||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
||||||
pip install --no-cache-dir uv && \
|
|
||||||
uv sync --frozen --no-dev
|
|
||||||
|
|
||||||
COPY app app
|
|
||||||
COPY main.py main.py
|
|
||||||
|
|
||||||
#-----------------------------------------------
|
|
||||||
|
|
||||||
FROM python:3.11-slim
|
|
||||||
|
|
||||||
WORKDIR /insightradar
|
|
||||||
|
|
||||||
# 👇 复制虚拟环境
|
|
||||||
COPY --from=builder /insightradar/.venv /insightradar/.venv
|
|
||||||
|
|
||||||
COPY app app
|
|
||||||
COPY main.py main.py
|
|
||||||
|
|
||||||
# 👇 关键:用 venv 里的 python
|
|
||||||
ENV PATH="/insightradar/.venv/bin:$PATH"
|
|
||||||
|
|
||||||
EXPOSE 8000
|
|
||||||
|
|
||||||
CMD ["python","main.py"]
|
|
||||||
+50
@@ -0,0 +1,50 @@
|
|||||||
|
# ---------- 阶段1:前端编译(Node打包静态产物) ----------
|
||||||
|
FROM node:22-alpine AS frontend-builder
|
||||||
|
|
||||||
|
WORKDIR /frontend
|
||||||
|
|
||||||
|
# 复制前端依赖,利用Docker缓存优化
|
||||||
|
COPY frontend/package*.json ./
|
||||||
|
RUN npm install --registry=https://registry.npmmirror.com
|
||||||
|
|
||||||
|
# 复制前端代码,编译出静态产物
|
||||||
|
COPY frontend/ .
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
# ---------- 阶段2:后端依赖构建(uv构建虚拟环境) ----------
|
||||||
|
FROM python:3.11-slim AS backend-builder
|
||||||
|
|
||||||
|
WORKDIR /backend
|
||||||
|
|
||||||
|
# 安装uv,同步Python依赖
|
||||||
|
COPY backend/pyproject.toml backend/uv.lock ./
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
|
pip install --no-cache-dir uv && \
|
||||||
|
uv sync --frozen --no-dev
|
||||||
|
|
||||||
|
# 复制后端代码
|
||||||
|
COPY backend/app ./app
|
||||||
|
COPY backend/main.py ./
|
||||||
|
|
||||||
|
# ---------- 阶段3:最终运行镜像(仅Python+Uvicorn,托管前端静态) ----------
|
||||||
|
FROM python:3.11-slim
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# 复制构建好的后端虚拟环境
|
||||||
|
COPY --from=backend-builder /backend/.venv /app/.venv
|
||||||
|
COPY --from=backend-builder /backend/app /app/app
|
||||||
|
COPY --from=backend-builder /backend/main.py /app/main.py
|
||||||
|
|
||||||
|
# 复制前端编译好的静态产物,放到后端能访问的目录
|
||||||
|
# 这里我们把静态文件放到 /app/static 目录
|
||||||
|
COPY --from=frontend-builder /frontend/dist /app/static
|
||||||
|
|
||||||
|
# 把venv加入PATH
|
||||||
|
ENV PATH="/app/.venv/bin:$PATH"
|
||||||
|
|
||||||
|
# 暴露Uvicorn端口
|
||||||
|
EXPOSE 8000
|
||||||
|
|
||||||
|
# 直接启动Uvicorn,由Uvicorn配合后端框架托管静态文件
|
||||||
|
CMD ["python3", "main.py"]
|
||||||
Reference in New Issue
Block a user