【发布时间】: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 文件夹