- 优先使用Node.js内置的process.cpuUsage()计算当前进程CPU使用率,提高跨平台准确性 - 为外部进程ps命令添加错误处理,避免在BusyBox环境下报错干扰日志 - 更新Dockerfile安装procps工具以支持系统监控功能 - 同步更新版本号至2.11.1
59 lines
1.8 KiB
Docker
59 lines
1.8 KiB
Docker
# ── Stage 1: 编译 Go TLS sidecar ──
|
||
FROM golang:1.22-alpine AS sidecar-builder
|
||
|
||
RUN apk add --no-cache git
|
||
|
||
WORKDIR /build
|
||
COPY tls-sidecar/go.mod tls-sidecar/go.sum* ./
|
||
RUN go mod download || true
|
||
|
||
COPY tls-sidecar/ ./
|
||
RUN go mod tidy && CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o tls-sidecar .
|
||
|
||
# ── Stage 2: Node.js 应用 ──
|
||
# 使用官方Node.js运行时作为基础镜像
|
||
# 选择20-alpine版本以满足undici包的要求(需要Node.js >=20.18.1)
|
||
FROM node:20-alpine
|
||
|
||
# 设置标签
|
||
LABEL maintainer="AIClient2API Team"
|
||
LABEL description="Docker image for AIClient2API server"
|
||
|
||
# 安装必要的系统工具(tar 用于更新功能,git 用于版本检查,procps 用于系统监控)
|
||
RUN apk add --no-cache tar git procps
|
||
|
||
# 设置工作目录
|
||
WORKDIR /app
|
||
|
||
# 复制package.json和package-lock.json(如果存在)
|
||
COPY package*.json ./
|
||
|
||
# 安装依赖
|
||
# 使用--production标志只安装生产依赖,减小镜像大小
|
||
# 使用--omit=dev来排除开发依赖
|
||
RUN npm install
|
||
|
||
# 复制源代码
|
||
COPY . .
|
||
|
||
# 从 sidecar 构建阶段复制二进制
|
||
# 放在 COPY . . 之后是为了确保不会被本地的空目录或旧二进制文件覆盖
|
||
COPY --from=sidecar-builder /build/tls-sidecar /app/tls-sidecar/tls-sidecar
|
||
RUN chmod +x /app/tls-sidecar/tls-sidecar
|
||
|
||
USER root
|
||
|
||
# 创建目录用于存储日志和系统提示文件
|
||
RUN mkdir -p /app/logs
|
||
|
||
# 暴露端口
|
||
EXPOSE 3000 8085 8086 19876-19880
|
||
|
||
# 添加健康检查
|
||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||
CMD node healthcheck.js || exit 1
|
||
|
||
# 设置启动命令
|
||
# 使用默认配置启动服务器,支持通过环境变量配置
|
||
# 通过环境变量传递参数,例如:docker run -e ARGS="--api-key mykey --port 8080" ...
|
||
CMD ["sh", "-c", "node src/core/master.js $ARGS"]
|