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

Posted

技术标签:

【中文标题】Docker / NodeJS: "exec: \\"-d\\": $PATH 中找不到可执行文件"【英文标题】:Docker / NodeJS: "exec: \"-d\": executable file not found in $PATH"Docker / NodeJS: "exec: \"-d\": $PATH 中找不到可执行文件" 【发布时间】:2022-01-21 18:16:26 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

您引用的 Dockerfile 旨在用作父映像,以便轻松对您的应用程序进行 docker 化。

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

每当使用此特定图像作为父图像构建新图像时,都会执行ONBUILD 指令(FROM 指令)。 More info

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

要添加到项目中的 dockerfile:

FROM this_image:9.1

如何构建你的应用镜像:

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

【讨论】:

以上是关于Docker / NodeJS: "exec: \"-d\": $PATH 中找不到可执行文件"的主要内容,如果未能解决你的问题,请参考以下文章

text docker_ex

如何调试“构建”的生产 NodeJS

Nodejs express 获取url参数,post参数的三种方式

docker pull 失败解决办法

Docker运行nodejs及调试

Docker+Jenkins持续集成环境使用docker+jenkins构建nodejs前端项目