【问题标题】:Docker build: Not showing dist folder after ng buildDocker构建:ng构建后不显示dist文件夹
【发布时间】:2021-12-11 18:38:28
【问题描述】:

我正在尝试将 angular-9 应用程序容器化。

码头文件

FROM node:14.17.0-alpine as build-step
RUN mkdir -p /app
WORKDIR /app
COPY package.json /app
COPY . /app

# Install & build packages
RUN npm install
# Listing 1
RUN ls -la 
RUN npm run build:docker
# Listing 2
Run ls -la

# Setup nginx
FROM nginx:alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=build-step /app/dist/  /usr/share/nginx/html/ 

# Expose port 80
EXPOSE 80

包.json

script: {
"build:docker": "node --max-old-space-size=10240 ./node_modules/@angular/cli/bin/ng build --prod --output-path=dist"
}

#Listing 1(in dokerfile) 显示 node-modules 文件夹,但 Listing 2(in dokerfile) 不显示。 最后还是报错

COPY failed: stat app/dist/: file does not exist

我无法理解为什么它没有获取在 docker 中构建的文件。

我在下面添加日志的屏幕截图。

【问题讨论】:

  • 能否也显示npm run build:docker的输出?
  • 刚刚编译成功
  • 我在问题中添加了日志截图。
  • 您可以添加实际的日志,而不是屏幕截图吗?以后阅读和搜索会容易得多。
  • 我注意到一件事,如果我在 windows 机器上做 docker build,它工作得非常好,但如果我在 Linux 或 Mac 上做,它会给出同样的错误。知道可能是什么原因吗?

标签: node.js angular docker nginx


【解决方案1】:

这个 Dockerfile 怎么样

FROM node:14.17.0-alpine as build-step
WORKDIR /app
COPY package.json .
COPY package-lock.json .
RUN npm ci
# node_modules installed

COPY . .
RUN npm run build:docker
# dist filled with your build app

FROM nginx:alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=build-step /app/dist/ /usr/share/nginx/html

您应该在同一目录中有一个.dockerignore 文件,其中包含

dist
node_modules

这应该通过npm ci 准确安装package-lock.json 的版本。它不会通过.dockerignore 复制 dist 或 node_module 目录并加快您的构建速度。

如果这一切都没有帮助,请提供RUN npm run build:docker 的输出。

【讨论】:

  • 试过你所说的一切,但没有任何帮助。我在上面的问题中添加了输出日志。
  • 本地运行build:docker时,dist在哪里生成?
  • 是的,它被生成了。而且它不仅仅是 dist 文件夹,甚至 node-modules 也不存在。
  • node_modules 必须在那里,因为 docker:build 不会失败.... 在 build:docker 中仅使用 ng build --prod 并从 dist/app 复制呢?
  • 我注意到一件事,如果我在 windows 机器上做 docker build,它工作得非常好,但如果我在 Linux 或 Mac 上做,它会给出同样的错误。知道可能是什么原因吗?
猜你喜欢
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-03
相关资源
最近更新 更多