【发布时间】:2016-09-22 06:45:12
【问题描述】:
我创建了一个 docker 映像,它使用容器内部的 webpack 为一个简单的 react 应用程序提供服务,但我在浏览器中什么也没有。
这是我的配置文件
package.json
{
"name": "invas_client",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "webpack --inline --content-base ."
},
"author": "",
"license": "ISC",
"dependencies": {
"react": "^0.14.7",
"react-dom": "^0.14.7",
"react-router": "^2.0.0"
},
"devDependencies": {
"babel-core": "^6.5.1",
"babel-loader": "^6.2.2",
"babel-preset-es2015": "^6.5.0",
"babel-preset-react": "^6.5.0",
"http-server": "^0.8.5",
"webpack": "^1.12.13",
"webpack-dev-server": "^1.14.1"
}
}
webpack.config.js
module.exports = {
entry: './index.js',
output: {
filename: 'bundle.js',
publicPath: ''
},
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' }
]
}
}
Dockerfile
# Use starter image
FROM node:argon
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install
# Bundle app source
COPY . /usr/src/app
# Expose port
EXPOSE 8080
# Default command to run
CMD ["npm", "start"]
什么工作正常
当我运行npm start时,webpack-dev-server运行正常,当我转到http://localhost:8080时,我看到了我的页面。
什么不工作
当我使用 docker 运行我的服务器时,使用以下命令:
docker build -t anubhav756/app . && docker run -p 80:8080 anubhav756/app
日志显示容器内部一切正常,但是当我将浏览器指向http://localhost 时,我得到ERR_CONNECTION_RESET
示例代码结束here
【问题讨论】:
-
您是在 Linux 上本地运行 Docker,还是在带有 Docker 机器的 VM 中运行?如果是 VM,那么您的容器端口会在 VM 内发布,因此您需要浏览到其 IP 地址 -
docker-machine ip。 -
@EltonStoneman 在 Linux 上原生
-
嗯。
iptables -L的 Docker 链中有什么有趣的事情吗? -
docker ps显示:容器 ID 图像命令已创建状态端口名称 c25001e81847 anubhav756/invas_client "npm start" 16 秒前 Up 14 seconds 0.0.0.0:80->8080/tcp beserk_hoover -
iptables -L显示:链 DOCKER(3 个引用)目标 prot opt 源目标 ACCEPT tcp -- 任何地方 172.17.0.2 tcp dpt:http-alt Chain DOCKER-ISOLATION(1 个引用)目标 prot opt 源目的地 DROP all -- 任何地方任何地方 DROP all -- 任何地方任何地方 DROP all -- 任何地方任何地方 RETURN all -- 任何地方任何地方
标签: docker webpack webpack-dev-server