Docker / NodeJS:" exec:\" -d \":$ PATH"中找不到可执行文件

时间:2017-11-20 09:37:18

标签: node.js docker dockerfile

从NodeJS 8.2升级到9.1后,我遇到运行Docker容器的问题。这是我得到的信息。

我使用了我在Docker Hub中找到的Dockerfile,但收到了无法找到package.json的错误。所以我评论它并使用我在NodeJS网站上找到的那个。

以下是Docker文件:

Dockerfile

FROM node:9.1.0
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ONBUILD ARG NODE_ENV
ONBUILD ENV NODE_ENV $NODE_ENV
ONBUILD COPY package*.json ./
ONBUILD RUN npm install && npm cache clean --force 
ONBUILD COPY . /usr/src/app 

CMD [ "npm", "start" ] 

感谢更有经验的用户提供的帮助。

2 个答案:

答案 0 :(得分:1)

您的docker run命令语法错误。图像名称后面的所有内容都用于覆盖容器中运行的命令。因此docker run myimage -d将尝试在容器内运行-d,而docker run -d myimage将使用-d选项运行您的容器以使用docker run(分离模式)。

答案 1 :(得分:0)

您引用的Dockerfile旨在用作父图像,以便轻松实现应用程序的泊坞化。

因此,要对您的nodejs应用程序进行dockerize,您需要使用所述dockerfile创建的docker镜像创建dockerfile。

只要使用此特定图像构建新图像作为父图像(ONBUILD指令),就会执行FROM指令。 More info

我从未使用过这样的图像,但从它的外观来看,用FROM指令引用图像就足够了,然后通过构建参数提供NODE_ENV。 / p>

要添加到项目中的dockerfile:

FROM this_image:9.1

如何构建应用程序映像:

docker build -t IMAGE_NAME:TAG --build-arg NODE_ENV=production .