FROM python:3.10 # 安装系统依赖(包括编译 ephem 所需的依赖) RUN apt-get update && apt-get install -y \ git \ build-essential \ python3-dev \ && rm -rf /var/lib/apt/lists/* # 升级 pip RUN python -m pip install --upgrade pip setuptools wheel # 创建非 root 用户 RUN useradd -m -u 1000 user USER user # 设置环境变量 ENV PATH="/home/user/.local/bin:$PATH" ENV PYTHONPATH=/app/practical_astronomy/source:$PYTHONPATH ENV MCP_TRANSPORT=http ENV MCP_PORT=7860 # 设置工作目录 WORKDIR /app # 复制代码(必须先复制才能编译本地 ephem) COPY --chown=user:user . /app # 在非 root 用户前安装 ephem 的编译依赖(必须用 root) USER root RUN apt-get update && apt-get install -y \ python3-dev \ && rm -rf /var/lib/apt/lists/* USER user # 复制并安装依赖 COPY --chown=user:user ./requirements.txt requirements.txt RUN pip install --no-cache-dir --user --upgrade -r requirements.txt # 编译本地的 ephem 源码 RUN cd /app/pyephem/source && python setup.py build_ext --inplace 2>&1 || echo "Trying pip install in-place build..." RUN pip install --no-cache-dir --user -e /app/practical_astronomy/source 2>&1 || true # 复制代码(必须先复制才能编译本地 ephem) COPY --chown=user:user . /app # 端口暴露 EXPOSE 7860 # 启动命令 CMD ["python", "practical_astronomy/mcp_output/start_mcp.py"]