# 第一阶段:构建环境 FROM ubuntu:20.04 AS builder # 避免交互式前端 ENV DEBIAN_FRONTEND=noninteractive # 设置DNS环境变量,避免网络连接问题 ENV RES_OPTIONS="timeout:1 attempts:1 rotate" ENV GETDNS_STUB_TIMEOUT=100 # 使用阿里云镜像源加速 RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \ sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list # 安装构建工具和依赖 RUN apt-get update && apt-get install -y \ build-essential \ cmake \ git \ curl \ libssl-dev \ python3-dev \ python3-pip \ ca-certificates \ gnupg \ --no-install-recommends \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # 设置pip镜像源(阿里云) RUN python3 -m pip install -i https://mirrors.aliyun.com/pypi/simple/ --upgrade pip && \ pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ # 安装Node.js RUN mkdir -p /etc/apt/keyrings && \ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \ echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \ apt-get update && \ apt-get install -y nodejs && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # 设置npm淘宝镜像 RUN npm config set registry https://registry.npmmirror.com # 安装项目所需的npm包 RUN npm install -g @modelcontextprotocol/server-puppeteer \ @modelcontextprotocol/server-filesystem \ @kevinwatt/shell-mcp \ @modelcontextprotocol/server-everything # 创建工作目录 WORKDIR /app # 第二阶段:运行环境(包含所有依赖但没有构建工具) FROM ubuntu:20.04 AS release # 避免交互式前端 ENV DEBIAN_FRONTEND=noninteractive # 设置DNS环境变量,避免网络连接问题 ENV RES_OPTIONS="timeout:1 attempts:1 rotate" ENV GETDNS_STUB_TIMEOUT=100 # 使用阿里云镜像源加速 RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \ sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list # 安装运行时依赖(最小化) RUN apt-get update && apt-get install -y \ libssl-dev \ python3 \ ca-certificates \ curl \ --no-install-recommends \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # 安装Node.js RUN mkdir -p /etc/apt/keyrings && \ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \ echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \ apt-get update && \ apt-get install -y nodejs && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # 设置npm淘宝镜像 RUN npm config set registry https://registry.npmmirror.com # 从构建阶段复制全局npm包 COPY --from=builder /usr/local/lib/node_modules /usr/local/lib/node_modules COPY --from=builder /usr/local/bin /usr/local/bin # 创建工作目录 WORKDIR /app # 创建构建目录 RUN mkdir -p /app/build # 设置默认命令为bash CMD ["/bin/bash"]