lnp_ml/Dockerfile
2026-02-11 16:49:28 +08:00

64 lines
1.3 KiB
Docker

# LNP-ML Docker Image
# 多阶段构建,支持 API 和 Streamlit 两种服务
FROM python:3.8-slim AS base
# 设置环境变量
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
PIP_NO_CACHE_DIR=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1
WORKDIR /app
# 安装系统依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libxrender1 \
libxext6 \
curl \
&& rm -rf /var/lib/apt/lists/*
# 复制依赖文件
COPY requirements.txt .
# 安装 Python 依赖
RUN pip install --upgrade pip && \
pip install -r requirements.txt
# 复制项目代码
COPY pyproject.toml .
COPY README.md .
COPY LICENSE .
COPY lnp_ml/ ./lnp_ml/
COPY app/ ./app/
# 安装项目包
RUN pip install -e .
# 复制模型文件
COPY models/final/ ./models/final/
# ============ API 服务 ============
FROM base AS api
EXPOSE 8000
ENV MODEL_PATH=/app/models/final/model.pt
CMD ["uvicorn", "app.api:app", "--host", "0.0.0.0", "--port", "8000"]
# ============ Streamlit 服务 ============
FROM base AS streamlit
EXPOSE 8501
# Streamlit 配置
ENV STREAMLIT_SERVER_PORT=8501 \
STREAMLIT_SERVER_ADDRESS=0.0.0.0 \
STREAMLIT_SERVER_HEADLESS=true \
STREAMLIT_BROWSER_GATHER_USAGE_STATS=false
CMD ["streamlit", "run", "app/app.py"]