humanus.cpp/.devops/Dockerfile

102 lines
3.2 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 第一阶段:构建环境
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"]