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 中找不到可执行文件"的主要内容,如果未能解决你的问题,请参考以下文章