Docker-compose:ERR_EMPTY_RESPONSE
如果我通过首先创build映像然后运行它( docker build --rm -t myApp
+ docker run -p 80:80 -P -d myApp
)启动Docker容器,一切正常。
但是,当我使用Docker-compose并访问localhost时,浏览器返回ERR_EMPTY_RESPONSE错误(不是典型的:“连接被拒绝”)。
我错在哪里?
docker工人,compose.yml:
version: '2' services: myApp: build: myApp ports: - "80:8000"
/对myApp / Dockerfile:
FROM fedora-nodeJS ADD app.js / EXPOSE 8000 CMD node app
/myApp/app.js:
var http = require('http'); var PORT = 8000; var ADDR = '0.0.0.0'; http.createServer(function(req, res) { res.writeHead(301, { Location: 'http://stackoverflow.com' }); res.end(); }).listen(PORT,ADDR);
::我知道用Docker-compose只启动一个容器是没有意义的,但是在尝试启动几个容器时我有相同的ERR_EMPTY_RESPONSE错误,所以最后我想到了这个荒谬的场景,试图了解什么是失败。
在命令中,我可以看到
docker run -p 80:80 -P -d myApp
你正在暴露内部端口80,但在
泊坞窗,compose.yml
你正在暴露内部端口8000
ports: - "80:8000"
这是一个错字吗? 您实际上想要为您的应用公开哪个端口?
正如@emme指出的那样,这可能是你的错误。
对于任何有相同问题但100%肯定他们的端口configuration是正确的,这可能是您的防病毒问题。 我的公司在我的Mac上安装了ESET端点防病毒软件,默认情况下,防病毒软件阻止访问localhost:80
。 虽然服务器可以绑定到端口80,但在启用“启用HTTP检查”(在“Web访问保护”下)的情况下,不会有客户端连接到此服务器。
听起来像一个愚蠢的答案,但我失去了一个下午搞清楚为什么docker run -p 80:80 -P -d myApp
不会工作,而docker run -p 81:80 -P -d myApp
会。
- jenkinsdocker插件+提交docker奴隶,如何将其推送到外部registry。 保存在云模板中configuration的Docker主机上的图像
- 在Docker容器中运行简单的Elixir应用程序时出错
- 在docker上运行python程序
- docker centos6.6容器上的autoexpect无法工作
- Docker for Mac状态“Running”是什么意思?
- configurationmysql / mysql-server dockerfile的问题
- 在Linux / Windows群集上部署服务时,Kubernetes“Failed create pod sandbox”错误
- IBM Bluemix:无法在Bluemix主机卷上安装MongoDB容器“/ data / db”
- 在OS X上没有/var/run/docker.sock