【问题标题】:Error building Node/NPM Angular image on Docker在 Docker 上构建 Node/NPM Angular 映像时出错
【发布时间】:2021-02-14 01:40:46
【问题描述】:

我尝试了很多方法来解决这个问题,但都不起作用。 我有一个 Angular 应用程序,我使用以下代码创建了一个 Dockerfile:

FROM node:latest AS ng-builder
RUN mkdir -p /app
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
RUN $(npm bin)/ng build --prod


FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=ng-builder /app/dist/sca-front /usr/share/nginx/html

EXPOSE 80

我的应用程序在运行“ng s”时运行良好。但是当我在 Docker 上创建图像时,它不起作用。我没有代理,没有 vpn,互联网连接良好...

显示这些错误/警告:

npm notice 
npm notice New patch version of npm available! 7.0.3 -> 7.0.7
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v7.0.7>
npm notice Run `npm install -g npm@7.0.7` to update!
npm notice
npm ERR! code ERR_SOCKET_TIMEOUT
npm ERR! errno ERR_SOCKET_TIMEOUT
npm ERR! request to https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz failed, reason: Socket timeout

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-11-01T01_24_40_819Z-debug.log

由于 Angular 的版本,我尝试调用“RUN npm RUN npm install -g npm@7.0.7”......但它看起来像超时。我尝试在 docker 上更改 npm 版本...但它不起作用。

我在一个新的/小项目中尝试了 dockerfile,它正在工作。但在一个更大的项目中......

【问题讨论】:

  • 你为什么不在容器外运行 ng build 在 shell 脚本中,然后在你的 docker 文件中只使用 FROM nginx 并复制 angular build 目录到 nginx html。这样,您根本不需要在 docker 中完成节点构建。
  • 我会搜索stackoverflow.com/questions/20430371/…之类的东西
  • @Abe 我可以这样做,但在许多语言和技术中,由于 CI/CD 的原因,构建应用程序的好方法。无论如何,谢谢
  • @Ben W,实际上,互联网可以工作,但可能有超时
  • @Dockerizandu 是 CI/CD 的好方法,但是您需要可重复的构建。复制镜像中的 package.json 和 package-lock.json 并尝试使用 npm ci 而不是 npm install

标签: angular docker npm


【解决方案1】:

我在尝试在 Docker 上为我的 react 应用创建容器时遇到了类似的错误。 我使用node:14-apline 作为基础映像解决了它,并在安装软件包之前安装了npm@latest

注意:您可以决定安装npm@7

FROM node:14-alpine

WORKDIR /app

COPY package*.json ./

RUN npm install npm@latest

RUN npm install

COPY . ./

CMD ["npm","run","start"]

https://github.com/npm/cli/issues/2031#issuecomment-715935308

【讨论】:

  • 我会尽快测试,我会给你一个反馈!谢谢
  • 太棒了!我很期待知道它是否会成功。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 2018-04-23
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 2020-06-15
相关资源
最近更新 更多