Docker / NodeJS:“exec:\” – d \“:在$ PATH中找不到可执行文件”

从NodeJS 8.2升级到9.1后,运行Docker容器时出现问题。 这是我得到的消息。

我使用了在Docker Hub中find的Dockerfile,但遇到了无法findpackage.json的错误。 所以我评论说,并使用我在NodeJS网站上find的那个。

以下是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" ] 

我会感谢更有经验的用户的帮助。

你引用的Dockerfile是用来作为你的应用程序的一个简单的dockerization的父图像。

因此,为了dockerize你的nodejs应用程序,你需要使用由dockerfile创build的docker镜像创build一个dockerfile。

每当使用该特定图像构build新图像作为父图像( FROM指令)时, ONBUILD指令ONBUILD执行。 更多信息

我从来没有像这样使用过一个图像,但从它的外观来看,它应该足以使用FROM指令引用图像,然后通过构build参数提供NODE_ENV

dockerfile添加到您的项目中:

 FROM this_image:9.1 

如何构build您的应用程序图像:

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

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