【问题标题】: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" ] 

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

【问题讨论】:

    标签: node.js docker dockerfile


    【解决方案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 .
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多