【发布时间】:2019-01-22 05:02:49
【问题描述】:
以下是我的项目结构。
root
├── public
│ ├── favicon.ico
│ └── index.html
├── server
│ └── index.js
├── src
└── index.js
这是一个 React + Redux Web 应用程序,带有一个 Node.js Express 服务器来为路由提供服务。 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
【问题讨论】:
-
当你说“它不起作用”时,你能不能说得更具体一些。此外,让您的 React 前端和 express 后端位于 2 个不同的容器中会更有意义。如果需要,您可以使用
docker-compose同时运行两个容器 -
添加了我得到的错误。我找不到 webpack。
-
另外图片只包含
node_modules和package.json。node_modules不包含 webpack。 -
webpack不会全局安装在该容器映像中。您需要将其作为依赖项并将其设置在您的package.json的scripts部分中。这样你就可以在你的容器内做npm run ...。似乎你一次尝试做太多你还没有完全阅读的事情,我会一步一步地学习 webpack 构建是如何工作的,拆分你的前端和后端,然后跟随一些关于如何正确创建镜像的 Docker 教程
标签: node.js reactjs docker webpack