运行Node服务器和Webpack的Dockerize React + Redux应用程序

时间:2018-08-15 10:00:10

标签: node.js reactjs docker webpack

以下是我的项目结构。

root
├── public
│   ├── favicon.ico
│   └── index.html
├── server
│   └── index.js
├── src
    └── index.js

这是一个带有Node.js Express服务器的React + Redux Web应用程序,用于路由。 Webpack将所有内容构建到/ dist文件夹中。

我创建了以下Dockerfile,尝试构建并运行,但是它不起作用。

FROM node:8.11.3

ENV NODE_ENV=production

RUN mkdir -p /app
WORKDIR /app
COPY package.json /app/
RUN npm install

CMD npm run build && npm start

EXPOSE 8080

我将使用哪种正确的生产级Dockerfile配置?

更新:这是我得到的错误。

# docker run -i -t -p 8080:8080 45e219dfed94

> myapp@1.0.0 build /app
> webpack --mode production

sh: 1: webpack: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! myapp@1.0.0 build: `webpack --mode production`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the myapp@1.0.0 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-08-15T12_15_41_041Z-debug.log

1 个答案:

答案 0 :(得分:0)

埃里克

“未找到Webpack”错误表示未在容器内部安装Webpack。将以下内容添加到项目的package.json中的“ dependencies”中:

  "webpack": "^4.0.1",
  "webpack-cli": "^2.0.9"

看起来像这样

"dependencies": {
  ...,
  "webpack": "^4.0.1",
  "webpack-cli": "^2.0.9"
},