You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建失败因NPM问题:sharp依赖安装报错及日志缺失

Docker构建Sharp依赖安装失败的解决方法

问题说明

执行docker build -t booru ./booru时,RUN npm ci步骤报错,sharp依赖安装失败,提示Invalid Version: 1.2.4_git20230717;系统提示NPM版本过时,但本地已完成更新,且指定路径下找不到NPM日志文件。

错误日志

root@ubuntu:/var/www/html# docker build -t booru ./booru
[+] Building 16.5s (9/19)                                                                                                                                                                                                     docker:default
 => [internal] load build definition from Dockerfile                                                                                                                                                                                    0.0s
 => => transferring dockerfile: 685B                                                                                                                                                                                                    0.0s
 => [internal] load metadata for docker.io/library/node:18-alpine                                                                                                                                                                       0.3s
 => [internal] load .dockerignore                                                                                                                                                                                                       0.0s
 => => transferring context: 45B                                                                                                                                                                                                        0.0s
 => [internal] load build context                                                                                                                                                                                                       0.0s
 => => transferring context: 2.67kB                                                                                                                                                                                                     0.0s
 => [stage-1 1/6] FROM docker.io/library/node:18-alpine@sha256:ca9f6cb0466f9638e59e0c249d335a07c867cd50c429b5c7830dda1bed584649                                                                                                         0.0s
 => CACHED [stage-1 2/6] WORKDIR /app                                                                                                                                                                                                   0.0s
 => CACHED [builder  2/10] WORKDIR /build                                                                                                                                                                                               0.0s
 => CACHED [builder  3/10] ADD ./package.json ./package-lock.json ./                                                                                                                                                                    0.0s
 => ERROR [builder  4/10] RUN npm ci                                                                                                                                                                                                   16.1s
------
 > [builder  4/10] RUN npm ci:
15.89 npm notice
15.89 npm notice New minor version of npm available! 10.2.4 -> 10.4.0
15.89 npm notice Changelog: <https://github.com/npm/cli/releases/tag/v10.4.0>
15.89 npm notice Run `npm install -g npm@10.4.0` to update!
15.89 npm notice
15.90 npm ERR! code 1
15.90 npm ERR! path /build/node_modules/sharp
15.90 npm ERR! command failed
15.90 npm ERR! command sh -c (node install/libvips && node install/dll-copy && prebuild-install) || (node install/can-compile && node-gyp rebuild && node install/dll-copy)
15.90 npm ERR! sharp: Installation error: Invalid Version: 1.2.4_git20230717
15.90
15.90 npm ERR! A complete log of this run can be found in: /root/.npm/_logs/2024-02-27T10_19_21_922Z-debug-0.log
------
WARNING: current commit information was not captured by the build: failed to read current commit information with git rev-parse --is-inside-work-tree
Dockerfile:6
--------------------
   4 |
   5 |     ADD ./package.json ./package-lock.json ./
   6 | >>> RUN npm ci
   7 |
   8 |     ARG NEXT_PUBLIC_NO_INDEX
--------------------
ERROR: failed to solve: process "/bin/sh -c npm ci" did not complete successfully: exit code: 1
root@ubuntu:/var/www/html# dir /root/.npm/_logs/
root@ubuntu:/var/www/html#

解决步骤

1. 修复Sharp版本解析异常

错误根源是Alpine系统中libvips版本号带_git后缀,sharp无法正常解析。可通过两种方式处理:

  • 在Dockerfile的RUN npm ci前添加环境变量,强制sharp使用预编译二进制包:
    ENV SHARP_IGNORE_GLOBAL_LIBVIPS=true
    
  • 本地升级sharp兼容版本:执行npm update sharp,更新package.json和package-lock.json后重新构建。

2. 处理NPM版本提示

Docker构建使用的是镜像内的NPM版本,与本地更新无关。若要消除提示,可在Dockerfile中先更新NPM:

RUN npm install -g npm@10.4.0

3. 获取完整NPM日志

日志文件在构建临时容器的/root/.npm/_logs/路径下,本地找不到是因为构建过程在容器内执行。可通过两种方式查看:

  • 调试用:修改Dockerfile,在RUN npm ci后添加复制日志命令:
    RUN npm ci && cp /root/.npm/_logs/* /app/logs/
    
  • 手动调试:启动临时容器挂载构建上下文,执行命令查看日志:
    docker run -it --rm -v $(pwd)/booru:/build node:18-alpine sh
    cd /build
    npm ci
    cat /root/.npm/_logs/*.log
    

4. 补充Alpine系统依赖

Alpine缺少sharp编译所需依赖,提前安装可避免潜在问题:

RUN apk add --no-cache vips-dev fftw-dev

内容的提问来源于stack exchange,提问作者Consuela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 09:03:17