【问题标题】:Dockerfile for an npm projectnpm 项目的 Dockerfile
【发布时间】:2017-08-22 23:20:08
【问题描述】:

我正在尝试为 crates.io 项目添加 docker-compose 设置。 npm 片段的当前文件如下:

FROM node:8.4
ENV npm_config_global true
COPY package.json package-lock.json ./
RUN npm install

一切都很好,但是当我尝试构建它时,它所做的只是:

Building frontend
Step 1/4 : FROM node:8.4
 ---> 6f6ffe2a1302
Step 2/4 : ENV npm_config_global true
 ---> Using cache
 ---> 868e1aec7aac
Step 3/4 : COPY package.json ./
 ---> 3846f64854e0
Removing intermediate container a1dea9f3f3a2
Step 4/4 : RUN npm install
 ---> Running in 18b3f1003133
npm info it worked if it ends with ok
npm info using npm@5.3.0
npm info using node@v8.4.0
npm info lifecycle cargo@0.0.0~preinstall: cargo@0.0.0
npm info linkStuff cargo@0.0.0
npm info lifecycle cargo@0.0.0~install: cargo@0.0.0
npm info lifecycle cargo@0.0.0~postinstall: cargo@0.0.0
+ cargo@0.0.0
added 1 package in 0.23s
npm info ok 
 ---> 6785fa0a2b21
Removing intermediate container 18b3f1003133
Successfully built 6785fa0a2b21
Successfully tagged cratesio_frontend:latest

所以根本没有安装任何devDependencies。我在这里想念什么?我应该添加其他参数吗?

我已经尝试使用--only=dev 运行它,但它也不起作用。

在不复制package-lock.json 的情况下运行它也会导致同样的事情:

Building frontend
Step 1/4 : FROM node:8.4
 ---> 6f6ffe2a1302
Step 2/4 : ENV npm_config_global true
 ---> Running in b77c06987f48
 ---> f52a6255ea31
Removing intermediate container b77c06987f48
Step 3/4 : COPY package.json ./
 ---> 26f4c713399a
Removing intermediate container 27d6fe45b3be
Step 4/4 : RUN npm install
 ---> Running in 58d4bd0e8f75
npm info it worked if it ends with ok
npm info using npm@5.3.0
npm info using node@v8.4.0
npm info lifecycle cargo@0.0.0~preinstall: cargo@0.0.0
npm info linkStuff cargo@0.0.0
npm info lifecycle cargo@0.0.0~install: cargo@0.0.0
npm info lifecycle cargo@0.0.0~postinstall: cargo@0.0.0
+ cargo@0.0.0
added 1 package in 0.207s
npm info ok 
 ---> 39f68ccde408
Removing intermediate container 58d4bd0e8f75
Successfully built 39f68ccde408
Successfully tagged cratesio_frontend:latest

【问题讨论】:

  • 你为什么要设置npm_config_global
  • 删除 ENV npm_config_global true 也将 COPY package.json package-lock.json ./ 更改为 COPY package.json .
  • @Ryan 因为这是一个基本映像,我需要所有这些可用的包,这样我就可以在其中运行命令而无需再次调用npm install。除了使用npm_config_global 之外,还有其他方法可以使这些包可用吗?
  • @TarunLalwani 我不能只删除它,这是一个基础映像,我需要在机器上安装软件包。
  • @MaurícioLinhares,我只是要求不要复制 package-lock.json 而不是删除整个内容

标签: node.js docker npm docker-compose


【解决方案1】:
  1. 检查您的 package-lock.jsonpackage.json 文件的 devDependency。正如我从日志文件中看到的,您将cargo 包安装为devDependency。

  2. 您的 Dockerfile 和日志相互矛盾。请检查您在构建期间使用的 Dockerfile。

详细资料 Dockerfile:

  • Dockerfile 中的第 4 行是 RUN npm install
  • Dockerfile 中的第 5 行不存在。

详细日志:

Step 4/5 : RUN npm install --only=dev
...
Step 5/5 : RUN npm install
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 2018-10-09
    • 2020-06-13
    • 2015-02-09
    • 2021-05-16
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多