# 使用 Node.js 20 作为基础镜像 FROM node:20 # 设置工作目录 WORKDIR /app # 安装必要的工具和依赖 RUN apt-get update && apt-get install -y \ build-essential \ zlib1g-dev \ libssl-dev \ wget \ && rm -rf /var/lib/apt/lists/* # 下载并安装最新版本的 Dropbear RUN wget https://matt.ucc.asn.au/dropbear/dropbear-2024.85.tar.bz2 \ && tar xjf dropbear-2024.85.tar.bz2 \ && cd dropbear-2024.85 \ && ./configure \ && make \ && make install \ && cd .. \ && rm -rf dropbear-2024.85* # 复制 package.json 和 package-lock.json(如果存在) COPY package*.json ./ # 安装依赖,包括 ssh2 RUN npm install # 复制其余的源代码和公共文件 COPY . . # 创建一个新用户,UID 为 1000 RUN if id 1000 >/dev/null 2>&1; then \ userdel -f $(id -nu 1000); \ fi \ && useradd -u 1000 -m -s /bin/bash user \ && echo 'user:password' | chpasswd # 设置 Dropbear RUN mkdir -p /etc/dropbear # 更改目录所有权 RUN chown -R user:user /app /etc/dropbear # 切换到新用户 USER user # 暴露 Web 应用端口和 Dropbear SSH 端口 EXPOSE 7860 2202 # 启动脚本 COPY start.sh /start.sh RUN chmod +x /start.sh # 使用启动脚本 CMD ["/start.sh"]