mirror of
https://github.com/stardrophere/InsightRadar.git
synced 2026-06-05 21:09:20 +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