在 docker 生产服务器上编译 webpack

Compile webpack on docker production server

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

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

编辑: 或者,我什至可以使用 apache 服务器提供所有服务,但我希望在 运行 docker-compose.

时编译和设置所有内容

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

你可以做到,但有一个小技巧你必须知道。 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 运行 构建
  • npm p运行e
  • 的结果

你的图片会比原来大 :

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

其中包含:

  • 第一次 npm 安装
  • npm 运行 构建

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

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

这样你会得到一个简约的图像。随着 :

  • npm 运行 构建
  • npm p运行e
  • 的结果

您的最终 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