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