在Docker容器执行npm ci遇TAR_ENTRY_ERROR错误,求解决方法
解决Docker中node:18.15-alpine执行
npm ci时的TAR_ENTRY_ERROR EINVAL错误 在使用node:18.15-alpine镜像的Docker容器中执行npm ci时,若出现如下错误:
$ npm ci npm WARN tar TAR_ENTRY_ERROR EINVAL: invalid argument, fchown npm WARN tar TAR_ENTRY_ERROR EINVAL: invalid argument, fchown npm WARN tar TAR_ENTRY_ERROR EINVAL: invalid argument, fchown
可尝试以下几种解决方案:
启用unsafe-perm配置
允许npm在非root用户下执行权限相关操作,避免解压时的fchown失败:npm ci --unsafe-perm=true或提前配置npm参数:
npm config set unsafe-perm true npm ci以root用户执行后回退权限
在Dockerfile中临时切换到root用户执行依赖安装,完成后将权限转回业务用户:USER root RUN npm ci RUN chown -R appuser:appuser node_modules USER appuser升级npm版本
该错误在npm 9.6.2中存在已知问题,升级到9.8.0及以上版本(或npm 10.x系列)可修复:npm install -g npm@latest && npm ci在Dockerfile中可直接集成:
RUN npm install -g npm@latest && npm ci跳过tar的chown操作
通过环境变量禁用解压时的所有者修改步骤:NPM_CONFIG_TAR_CHOWN=false npm ci或在Dockerfile中设置环境变量:
ENV NPM_CONFIG_TAR_CHOWN=false RUN npm ci
内容的提问来源于stack exchange,提问作者Raphaël Balet
相关产品推荐
相关产品推荐

