Major Changes: - Database: Install pg_bigm/pgvector plugins, create test database - Python service: v1.0 -> v1.1, add pymupdf4llm/openpyxl/pypandoc - Node.js backend: v1.3 -> v1.7, fix pino-pretty and ES Module imports - Frontend: v1.2 -> v1.3, skip TypeScript check for deployment - Code recovery: Restore empty files from local backup Technical Fixes: - Fix pino-pretty error in production (conditional loading) - Fix ES Module import paths (add .js extensions) - Fix OSSAdapter TypeScript errors - Update Prisma Schema (63 models, 16 schemas) - Update environment variables (DATABASE_URL, EXTRACTION_SERVICE_URL, OSS) - Remove deprecated variables (REDIS_URL, DIFY_API_URL, DIFY_API_KEY) Documentation: - Create 0126 deployment folder with 8 documents - Update database development standards v2.0 - Update SAE deployment status records Deployment Status: - PostgreSQL: ai_clinical_research_test with plugins - Python: v1.1 @ 172.17.173.84:8000 - Backend: v1.7 @ 172.17.173.89:3001 - Frontend: v1.3 @ 172.17.173.90:80 Tested: All services running successfully on SAE
58 lines
1.8 KiB
Docker
58 lines
1.8 KiB
Docker
# ========================================
|
||
# 多阶段构建:Python微服务
|
||
# ========================================
|
||
|
||
# -------------------- 阶段1: 构建阶段 --------------------
|
||
FROM python:3-slim AS builder
|
||
|
||
# 设置工作目录
|
||
WORKDIR /app
|
||
|
||
# 替换为阿里云镜像源(为将来可能的构建依赖做准备)
|
||
RUN sed -i 's|http://deb.debian.org|http://mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources \
|
||
&& sed -i 's|http://security.debian.org|http://mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources
|
||
|
||
# 复制依赖文件
|
||
COPY requirements-prod.txt .
|
||
|
||
# 安装Python依赖到临时目录(使用预编译wheel,无需编译依赖)
|
||
RUN pip install --no-cache-dir --user -r requirements-prod.txt
|
||
|
||
# -------------------- 阶段2: 运行阶段 --------------------
|
||
FROM python:3-slim
|
||
|
||
# 设置工作目录
|
||
WORKDIR /app
|
||
|
||
# 替换为阿里云镜像源并安装运行时依赖
|
||
RUN sed -i 's|http://deb.debian.org|http://mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources \
|
||
&& sed -i 's|http://security.debian.org|http://mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources \
|
||
&& apt-get update \
|
||
&& apt-get install -y --no-install-recommends \
|
||
libgl1 \
|
||
libglib2.0-0 \
|
||
libgomp1 \
|
||
pandoc \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# 从构建阶段复制Python包
|
||
COPY --from=builder /root/.local /root/.local
|
||
|
||
# 复制应用代码
|
||
COPY . .
|
||
|
||
# 设置Python路径
|
||
ENV PATH=/root/.local/bin:$PATH
|
||
ENV PYTHONUNBUFFERED=1
|
||
|
||
# 暴露端口
|
||
EXPOSE 8000
|
||
|
||
# 健康检查
|
||
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
|
||
CMD python -c "import requests; requests.get('http://localhost:8000/api/health', timeout=5)"
|
||
|
||
# 启动命令
|
||
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "2"]
|
||
|