树莓派4中Dockerfile运行Node.js+SQLite3遇npm 'idealTree'错误
Docker构建报错:npm ERR! Tracker "idealTree" already exists 解决方法
问题场景
以下是用于树莓派4上运行Node.js和SQLite3的Dockerfile代码:
FROM arm32v7/ubuntu:18.04 RUN apt-get -y install curl gnupg RUN curl -sL https://deb.nodesource.com/setup_16.x | bash - RUN apt-get -y install nodejs #RUN apt-get install -y npm RUN npm install sqlite3 WORKDIR /usr/src/app COPY . . RUN npm install CMD ["node", "/usr/src/app/server/index.js"]
构建镜像时出现如下错误:
npm ERR! Tracker "idealTree" already exists npm ERR! 本次运行的完整日志可查看: npm ERR! /root/.npm/_logs/2023-04-27T15_11_38_675Z-debug-0.log
解决方法
- 移除全局安装sqlite3的步骤:原Dockerfile中
RUN npm install sqlite3是在全局环境执行,后续进入工作目录后又执行npm install,这会导致npm进程冲突。将该行删除,把sqlite3作为项目依赖声明在package.json中,由工作目录下的npm install统一安装。 - 合并RUN命令并清理缓存:将多个apt相关的RUN命令合并,同时清理apt缓存,既缩小镜像体积,也减少潜在的进程冲突。修改后的Dockerfile示例:
FROM arm32v7/ubuntu:18.04 RUN apt-get update && apt-get -y install curl gnupg && \ curl -sL https://deb.nodesource.com/setup_16.x | bash - && \ apt-get -y install nodejs && \ apt-get clean && rm -rf /var/lib/apt/lists/* WORKDIR /usr/src/app COPY . . RUN npm install CMD ["node", "/usr/src/app/server/index.js"]
- 特殊情况处理:如果修改后仍报错,可在
npm install时添加参数强制执行,或先清理npm缓存:RUN npm cache clean --force && npm install
内容的提问来源于stack exchange,提问作者THEGUGGU
相关产品推荐
相关产品推荐

