繁体   English   中英

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

[英]Docker / NodeJS: “exec: \”-d\“: executable file not found in $PATH”

从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" ] 

我将感谢经验丰富的用户的帮助。

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

您引用的Dockerfile旨在用作父映像,以简化应用程序的Docker化。

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

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

我从未使用过这样的图像,但是从它的外观来看,使用FROM指令引用该图像然后通过build args提供NODE_ENV应该足够了。

要添加到项目中的dockerfile:

FROM this_image:9.1

如何构建您的应用程序映像:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM