Node.js Docker找不到模块/bin/bash
您好,我正在尝试为nodejs web后端构建一个docker映像,该映像当前如下所示:Node.js Docker找不到模块/bin/bash,node.js,docker,Node.js,Docker,您好,我正在尝试为nodejs web后端构建一个docker映像,该映像当前如下所示: FROM node:10-alpine WORKDIR /usr/src/smart-brain-api COPY ./ ./ RUN npm install CMD ["/bin/bash"] 当我在构建图像后执行“docker run-it”时,我会遇到一个奇怪的错误 internal/modules/cjs/loader.js:638 throw err;
FROM node:10-alpine
WORKDIR /usr/src/smart-brain-api
COPY ./ ./
RUN npm install
CMD ["/bin/bash"]
当我在构建图像后执行“docker run-it”时,我会遇到一个奇怪的错误
internal/modules/cjs/loader.js:638
throw err;
^
Error: Cannot find module '/bin/bash'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
但是,如果我编辑docker文件并将CMD[“/bin/bash”]更改为CMD[“/bin/sh”],一切正常
我正在开发macbook air 13',我不知道这是否是一个因素。
alpine
图像没有现成安装的bash
。您需要单独安装它
RUN apk update && apk add bash
您可以在工作容器中尝试
哪个bash
,但此容器映像中很可能没有bash
尝试使用一个不那么纤细的图像。就像另一个答案说的那样,你需要先安装bash,因为alpine没有安装bash。您需要使用以下设备安装它:
RUN apk update && apk add bash
然后,您可以使用dockerfile中的这一行将默认shell从sh切换到bash
SHELL ["/bin/bash", "-c"]
dockerfile应该是这样的
FROM node:10-alpine
RUN apk update && apk add bash
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
CMD bash # If you want to override CMD
然后你可以用这条线启动你的容器
docker run -it --rm <image-name> bash
docker运行-it--rm bash
或者,如果您已经覆盖了CMD,您可以简单地执行以下操作
docker run -it --rm <image-name>
docker运行-it--rm
我在安装bash后收到错误