# 使用官方Node.js运行时作为基础镜像 # 选择20-alpine版本以满足undici包的要求(需要Node.js >=20.18.1) FROM node:20-alpine # 设置标签 LABEL maintainer="GeminiCli2API Team" LABEL description="Docker image for GeminiCli2API server" # 设置工作目录 WORKDIR /app # 复制package.json和package-lock.json(如果存在) COPY package*.json ./ # 安装依赖 # 使用--production标志只安装生产依赖,减小镜像大小 # 使用--omit=dev来排除开发依赖 RUN npm install # 添加非root用户以提高安全性 RUN addgroup -g 1001 -S nodejs RUN adduser -S nextjs -u 1001 # 复制源代码 COPY . . # 更改文件所有者为非root用户 RUN chown -R nextjs:nodejs /app USER nextjs # 创建目录用于存储日志和系统提示文件 RUN mkdir -p /app/logs # 暴露端口 EXPOSE 3000 # 添加健康检查 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/api-server.js $ARGS"]