[英]Strange errors when running npm install on alpine linux
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
如何解決這個問題?
不知道這是怎么回事。 我顯然沒有您的應用程序,但是我嘗試在公共模塊(例如newman )上進行npm安裝,但遇到了同樣的錯誤。 查看該映像的dockerhub頁面 ,我找到了Dockerfile-似乎正在卸載npm。 確實,當我直接運行該dockerfile時,沒有npm-因此,我不確定公共映像仍然具有該文件,除非此刻其構建過程有所中斷。
附帶說明一下,這樣做有點效率低下:
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
這似乎工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.