如何使用webpack在Docker容器中启动生产应用程序?

感谢您浏览此页面。 希望你会留下任何评论,这可能对我有帮助。

我有一个React + Redux和Webpack(使用Webpack开发服务器的课程)的应用程序。

我已经尝试了好几次在Docker容器的端口8004:8080上启动它,但不能这样做,不知道为什么。

我的目的是在我的Docker机器上启动许多站点,但首先我需要在本地机器上testing它。

这就是为什么我用这个代码使用docker-compose.yml文件的原因:

version: '2' services: mysql: build: mysql/ restart: always volumes: - db_data:/var/lib/mysql container_name: mysql vshvetsov: depends_on: - mysql build: vshvetsov/ ports: - 8000:80 restart: always container_name: vshvetsov translators: depends_on: - mysql build: translators/ ports: - 8001:80 restart: always container_name: translators oral: depends_on: - mysql build: oral/ ports: - 8002:80 restart: always container_name: oral proling: depends_on: - mysql build: proling/ ports: - 8003:80 restart: `always` container_name: proling menuforyou: build: menuforyou/ ports: - 8004:8080 restart: always container_name: menuforyou volumes: db_data: 

我无法将menuforyou容器推送到localhost:8004与Dockerfile:

 FROM node:7.4.0-onbuild EXPOSE 8080 

当然,我需要发布我的可怜的webpackconfiguration“menuforyou”js网站:

 module.exports = { entry: './src/app/App.js', output: { path: './src', filename: 'bundle.js' }, devServer: { contentBase: './src', inline: true, historyApiFallback: true, port: 8080, }, module: { loaders: [ { test: /\.jsx?$/, exclude: /(node_modules|bower_components)/, loader: 'babel', query: { presets: ['es2015', 'react'] } }, { test: /\.json$/, loader: 'json-loader' }, { test: /\.css$/, loader: 'style-loader!css-loader' } ] } }; 

不是没有package.json,感谢npm创造者:

 { "name": "menuforyou", "version": "1.0.0", "description": "Quest for Middle/Senior developer CSSSR", "main": "./build/bundle.js", "scripts": { "start": "webpack-dev-server" }, "repository": { "type": "git", "url": "https://github.com/VadimShvetsov/MenuForYou.git" }, "homepage": "https://github.com/VadimShvetsov/MenuForYou", "author": "Vadim Shvetsov", "license": "ISC", "dependencies": { "pug-html-loader": "^1.0.9", "react": "^15.3.2", "react-addons-create-fragment": "^15.3.2", "react-autosuggest": "^7.0.1", "react-dom": "^15.3.2", "react-redux": "^4.4.5", "redux": "^3.6.0", "redux-logger": "^2.7.4", "redux-thunk": "^2.1.0" }, "devDependencies": { "babel-core": "^6.18.2", "babel-loader": "^6.2.7", "babel-preset-es2015": "^6.18.0", "babel-preset-react": "^6.16.0", "css-loader": "^0.26.1", "json-loader": "^0.5.4", "style-loader": "^0.13.1", "webpack": "^1.13.3", "webpack-dev-server": "^1.16.2" } } 

所以,我怎么了,我仍然无法从本地主机:8004什么,而不是“Safari无法打开此页面”。

忘记了menuofyou文件夹的树近,但是在这里:

 . ├── Dockerfile ├── README.md ├── package.json ├── src │  ├── app │  │  ├── App.js │  │  ├── actions │  │  │  ├── SearchAction.js │  │  │  └── UsersAction.js │  │  ├── components │  │  │  ├── Form.js │  │  │  ├── Main.js │  │  │  ├── Search.js │  │  │  ├── Users │  │  │  │  ├── UserListItem.js │  │  │  │  └── UsersList.js │  │  │  └── Users.js │  │  ├── constants │  │  │  └── ActionTypes.js │  │  ├── reducers │  │  │  ├── SearchReducers.js │  │  │  ├── UsersReducers.js │  │  │  └── rootReducer.js │  │  ├── store │  │  │  └── configureStore.js │  │  ├── styles │  │  │  ├── Main.css │  │  │  └── Search.css │  │  └── utils │  │  └── helpers.js │  ├── data │  │  └── users.json │  └── index.html └── webpack.config.js 

将感谢任何消息或build议。

祝你有个美好的一天,谢谢你的时间!

问题解决了只join – --host=0.0.0.0参数npm启动。

所以编辑后我的package.json如下所示:

 ... "scripts": { "start": "webpack-dev-server --host=0.0.0.0" }, ...