Node.js Docker找不到模块/bin/bash

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;

您好,我正在尝试为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;
    ^

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后收到错误