FROM node:20-slim # 创建应用目录 WORKDIR /app # Wrangler will prompt, and thus hang if you don't specify this ENV WRANGLER_SEND_METRICS=false # 添加非root用户 RUN groupadd -r nodejs && useradd -r -g nodejs nodejs # 复制项目文件 COPY package*.json ./ RUN npm install COPY . . # 声明所有需要的构建参数 ARG UUID # 如果需要在容器运行时使用,转换为环境变量 ENV UUID=${UUID} # 在 RUN 指令中使用双引号打印 RUN echo "UUID is: ${UUID}" # 打印所有环境变量 RUN printenv # 将环境变量写入 .dev.vars RUN echo "UUID=${UUID}" >> .dev.vars # 设置目录权限 RUN chown -R nodejs:nodejs /app # 切换到非root用户 USER nodejs # 创建必要的目录并设置权限 RUN mkdir -p /app/node_modules/.mf && \ mkdir -p /app/.wrangler RUN chown -R nodejs:nodejs /app/node_modules/.mf && \ chown -R nodejs:nodejs /app/.wrangler RUN chmod -R 777 /app/node_modules/.mf && \ chmod -R 777 /app/.wrangler EXPOSE 7860 CMD ["npm", "run", "start"]