# 使用基于Debian的Node.js镜像,更适合运行Puppeteer FROM node:18-slim # 设置工作目录 WORKDIR /app # 安装git、Python和其他必要工具 RUN apt-get update && \ apt-get install -y git wget gnupg python3 python3-pip curl && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # 安装uv (Python包管理器) RUN curl -LsSf https://astral.sh/uv/install.sh | sh # 从GitHub克隆代码 RUN git clone https://github.com/Pretend-to/mio-chat-backend.git . && \ rm -rf .git # 安装Chromium和相关依赖 RUN apt-get update && \ apt-get install -y \ chromium \ fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf \ ca-certificates \ libxss1 \ --no-install-recommends && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # 设置Puppeteer环境变量 ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \ PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium \ PUPPETEER_TIMEOUT=60000 \ PUPPETEER_ARGS="--no-sandbox,--disable-setuid-sandbox,--disable-dev-shm-usage" # 安装pnpm RUN npm install -g pnpm # npx已经包含在Node.js安装中,不需要额外安装 # 安装依赖 RUN pnpm install # 复制所有项目文件到容器中 COPY . . # 创建配置目录并设置权限 RUN mkdir -p /app/config/config && \ chmod -R 777 /app && \ chmod +x /app/start.sh # 设置环境变量默认值 # 所有这些环境变量都可以在运行容器时通过 -e 参数覆盖 ENV \ # 是否开启调试模式 DEBUG=false \ # OpenAI 相关配置 # 是否启用 OpenAI 协议 OPENAI_ENABLE=false \ # OpenAI API 密钥 API_KEY="" \ # OpenAI API 基础 URL BASE_URL="https://api.openai.com/v1" \ # 允许游客使用的模型关键词 OPENAI_GUEST_MODEL_KEYWORDS="gpt-4o-mini" \ # 允许游客使用的模型全名列表 OPENAI_GUEST_MODEL_FULLNAME_1="gpt-4o-mini" \ OPENAI_GUEST_MODEL_FULLNAME_2="gpt-4o-mini" \ OPENAI_GUEST_MODEL_FULLNAME_3="gpt-4o-mini" \ OPENAI_GUEST_MODEL_FULLNAME_4="gpt-4o-mini" \ # 默认使用的模型引擎 OPENAI_DEFAULT_ENGINE="gpt-4o-mini" \ # Gemini 相关配置 # 是否启用 Gemini 协议 GEMINI_ENABLE=true \ # Gemini API 密钥 GEMINI_API_KEY="" \ # Gemini API 基础 URL GEMINI_BASE_URL="https://generativelanguage.googleapis.com" \ # 允许游客使用的模型关键词 GEMINI_GUEST_MODEL_KEYWORDS="flash" \ # 允许游客使用的模型全名 GEMINI_GUEST_MODEL_FULLNAME="gemini-1.5-pro" \ # 默认使用的模型 GEMINI_DEFAULT_MODEL="gemini-2.0-flash" \ # Onebot 相关配置 # 是否启用 Onebot 协议 ONEBOT_ENABLE=false \ # 反向 WebSocket 连接地址 ONEBOT_REVERSE_WS_URL="" \ # 机器人 QQ 号 ONEBOT_BOT_QQ="" \ # 管理员 QQ 号 ONEBOT_ADMIN_QQ="" \ # 服务器相关配置 # 服务器监听端口 SERVER_PORT=3080 \ # 服务器监听地址 SERVER_HOST="0.0.0.0" \ # 单个 IP 每分钟最大请求数 SERVER_MAX_RATE=100 \ # Web 相关配置 # 管理员访问码 WEB_ADMIN_CODE="" \ # 普通用户访问码,留空则允许游客登录 WEB_USER_CODE="" \ # 网站备案号 WEB_BEIAN="" \ # 是否默认全屏模式 WEB_FULL_SCREEN=true \ # 网页标题 WEB_TITLE="蜜柚——MioChat" \ # 土块API相关配置 # 土块API密钥 EARTHK_API_KEY="" \ # 土块API绑定的QQ号 EARTHK_BIND_QQ="" # 将uv添加到PATH ENV PATH="/root/.cargo/bin:${PATH}" # 暴露服务端口 EXPOSE ${SERVER_PORT} # 设置启动命令 CMD ["/app/start.sh"] # 如果需要使用pm2运行,可以使用以下命令替代上面的CMD: # CMD ["npm", "run", "start"]