在alpine linux上运行npm install时出现奇怪的错误
Dockerfile:
FROM iron/node RUN apk add --update bash && rm -rf /var/cache/apk/* RUN apk add --update curl && rm -rf /var/cache/apk/* WORKDIR /usr/src/app COPY . /usr/src/app RUN npm install CMD [ "node", "index.js" ]
docker工人日志:
Sending build context to Docker daemon 198.2 MB Step 1 : FROM iron/node ---> 9ca501065d18 Step 2 : RUN apk add --update bash && rm -rf /var/cache/apk/* ---> Using cache ---> 0a03d023f33e Step 3 : RUN apk add --update curl && rm -rf /var/cache/apk/* ---> Using cache ---> 3e0176dae102 Step 4 : WORKDIR /usr/src/app ---> Using cache ---> 3f9d925bd76c Step 5 : COPY . /usr/src/app ---> 0c2c195505dd Removing intermediate container de7cb9edede2 Step 6 : RUN npm install ---> Running in d7549ec2707d Error relocating /usr/bin/node: uv_os_free_passwd: symbol not found Error relocating /usr/bin/node: uv_os_get_passwd: symbol not found The command '/bin/sh -c npm install' returned a non-zero code: 127
这是怎么回事? 这些错误是什么意思?
Error relocating /usr/bin/node: uv_os_free_passwd: symbol not found Error relocating /usr/bin/node: uv_os_get_passwd: symbol not found
如何解决这个问题?
不知道这是怎么回事。 我显然没有你的应用程序,但我试图做一个公共模块(例如纽曼 )的npm安装,我也遇到了同样的错误。 查看该图像的dockerhub页面 ,我find了Dockerfile – 这似乎是卸载npm。 事实上,当我直接运行dockerfile的时候,没有npm – 所以我不确定公共图像是如何保留的,除非他们的构build过程有点破碎。
作为一个方面说明,这样做有点低效:
RUN apk add --update bash && rm -rf /var/cache/apk/* RUN apk add --update curl && rm -rf /var/cache/apk/*
相反,你应该同时安装bash和curl:
RUN apk add --update bash curl && rm -rf /var/cache/apk/*
结合所有这些步骤(即直接使用dockerfile,并结合apk安装),而不是卸载npm给我:
FROM iron/base:edge RUN echo '@edge http://nl.alpinelinux.org/alpine/edge/main' >> /etc/apk/repositories # RUN echo '@community http://nl.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories RUN apk update && apk upgrade \ && apk add nodejs@edge bash curl \ && rm -rf /var/cache/apk/* RUN npm install -g newman
这似乎工作正常。
- Alpine OS上的Php7 Redis客户端
- 在docker alpine linux base image上设置glibc是否有最佳做法?
- 如何在Docker上运行Alpine的Apache 2?
- 高山Linux Docker SSHD图像使用VOL-save?
- Akka 2.5分布式数据在Docker + Alpine Linux上
- 如何使用基于高山的docker图像bash?
- Alpine Linux,非root用户,Java 7,Setcap:libjli.so:没有这样的文件或目录(java需要)
- 在产品中播放框架2.5:“坏的根服务器path”
- 无法在官方Docker PHP Alpine映像中安装一些PHP扩展(模块)