我正在尝试使用js文件的缩小版本来构建生产docker容器。
在我的Dockerfile
中,在安装npm软件包后,我正在尝试进行webpack编译。
RUN npm install -g n # upgrading the npm version
RUN n stable
ADD ./webpack/package.json /package.json
RUN npm install --production
RUN npm run build-production # <<< Fails here
在最后一个命令
RUN npm run build-production
执行时,docker构建过程会失败,npm会抱怨找不到已安装的包(因为NODE_PATH
被设置了)。然而,当我将调用
npm run build-production
添加到我的ENTRYPOINT
脚本中时,它可以正常工作并按预期编译所有内容。但是,每次启动容器时都会运行webpack构建,这不是所期望的。为什么最后一个docker构建步骤无法找到之前步骤中安装的包?但是为什么通过entrypoint脚本可以工作?
在Dockerfile中,将webpack构建添加到docker构建的最佳方法是什么?
build-production
的某个依赖项被列在了devDependencies
下,因此找不到它?这是由于--production
标志而没有安装?在运行时,您是否使用了卷(volume)? - dnephin