在docker生产服务器上编译webpack

时间:2017-03-04 18:02:59

标签: docker webpack config docker-compose

我正在为我的React / Redux应用程序设置docker,我想知道如何以这种方式设置它,在生产中,在容器设置上,webpack使用生产配置编译我的整个代码,然后它自行删除, 或类似的东西。因为我的项目唯一需要的是生产代码和一个服务它的简单节点服务器。

我不确定我是否解释得很好,因为docker和webpack对我来说仍然是新事物。

编辑: 或者我甚至可以使用apache服务器提供所有服务,但是我希望在运行docker-compose时编译和设置所有内容。

1 个答案:

答案 0 :(得分:3)

如果我理解正确,您希望在docker构建期间在npm运行构建之后删除映像中的节点dev依赖项。

你可以这样做,但你必须要注意一个小技巧。 Dockerfile中的每一行都会在图像中生成一个新步骤,并随图像一起推送。 所以,如果你在Dockerfile中执行:

RUN npm install     # Install dev and prod deps
RUN npm run build   # Execute your webpack build
RUN npm prune --production # Trash all devDependencies from your node_modules folder

您的图片尺寸包含:

  • 第一个npm安装
  • npm run build
  • npm prune的结果

你的形象将不仅仅是:

RUN npm install     # Install dev and prod deps
RUN npm run build   # Execute your webpack build

包含:

  • 第一个npm安装
  • npm run build

要避免此问题,您必须在dockerfile中执行以下操作:

RUN npm install && npm run build && npm prune --production

这样你就会得到一个简约的形象。随着:

  • npm run build
  • npm prune的结果

你的最终Dockerfile将是某种形式:

FROM node:7.4.0

ADD . /src
RUN cd /src && npm install && npm run build && npm prune --production  # You can even use npm prune without the --production flag

ENV NODE_ENV production