humanus.cpp/.devops/Dockerfile

102 lines
3.2 KiB
Docker
Raw Normal View History

2025-03-23 14:35:54 +08:00
# 第一阶段:构建环境
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"]