【问题标题】:'dist' folder is not generated while doing npm build in a Dockerfile在 Dockerfile 中执行 npm 构建时未生成“dist”文件夹
【发布时间】:2021-02-02 02:39:54
【问题描述】:

我通常为 Java / Go 应用程序编写 Dockerfile,这是我第一次遇到必须为已经存在的(和生产运行的)Node.js 应用程序编写 Dockerfile 的情况。根据我这几天对Node.js的一点了解,dist文件夹是在我们构建一个带有源代码的Node.js项目后生成的(如果我我错了)。所以我有兴趣将 dist 文件夹从父 Docker 映像复制到子 Docker 映像。

但是,在我将应用程序中的所有内容复制到我的父 Docker 映像(第 6 行)并运行“npm run build”命令后,没有为我生成 dist 文件夹(请注意 node_modules 和package-lock.json 正在生成中)。

我的 Dockerfile 如下:

FROM node:10-alpine as BUILD
WORKDIR /src
COPY package*.json /src
RUN apk add --update --no cache \
    python \
    make \
    g++
RUN npm install
COPY . /src
RUN npm run build

我该如何解决这个问题?

【问题讨论】:

  • 它在 Docker 之外工作吗?你看到或没看到什么? "build" 命令在 package.json 文件中的作用是什么?
  • @DavidMaze - 嗨,我刚刚尝试在本地构建项目,我很惊讶地发现,即使我在本地构建它,dist 文件夹也没有生成。不确定这背后的原因是什么(请注意生成了 node_modules 和 package-lock,json )。此外,我在构建后没有收到任何错误,并且显示了 Compiled Successfully 消息。来到你的第二点 - package.json 中的构建命令写成 - “build” = “next build”。如果您需要任何其他信息,请告诉我
  • 您可能会发现以下阅读内容很有趣:stackoverflow.com/questions/37975500/…
  • @Zeitounator - 我浏览了这篇文章并修改了 Dockerfile 以包含以下 2 个命令 - RUN npm install -g grunt-cli RUN npm install grunt 就在 COPY . /src 行之前。我仍然看不到在我的 docker 映像中生成的 dist 文件夹

标签: node.js docker npm


【解决方案1】:

如果您在节点应用程序中使用打字稿,请按照这些说明进行操作。

请在“tsconfig.json”的compilerOptions部分下添加以下条目

tsconfig.json

**"outDir": "./dist/"**

package.json - 也添加以下脚本。

"scripts": { "build": "tsc" }

现在,重新运行“npm run build”。您将看到 dist 文件夹。

【讨论】:

    【解决方案2】:

    尝试忽略“tsconfig.tsbuildinfo”文件。 不要将此文件复制到 docker 容器中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 2017-01-09
      • 2019-02-28
      相关资源
      最近更新 更多