我在我的应用程序容器的dockerfile.yml中暴露了端口80以及在我的docker-compose.yml中映射“80:80”但是在我执行“docker-compose up”之后我只得到了“Connection refused”并尝试在我的docker-machine的IP地址上的端口80上进行HTTP GET。我的docker hub提供了RethinkDB实例的管理面板通过相同的dockerfile.yml(“EXPOSE 8080”)和docker-compose.yml(端口“8080:8080”)进行了很好的映射,当我在本地开发机器端口上启动应用程序时80按预期暴露出来。
这里可能出现什么问题?我非常感谢任何拥有更多码头工作经验的人的快速见解!
答案 0 :(得分:2)
所以在我的情况下,我的服务容器都绑定到localhost(127.0.0.1),因此看起来暴露的端口从未通过我的docker-compose端口映射获取。我将我的服务配置为分别绑定到0.0.0.0,现在它们可以完美地工作。谢谢@creack指出我正确的方向。
答案 1 :(得分:0)
如果您使用相同的Dockerfile,请确保您还公开了端口80 EXPOSE 80
,否则您的撰写映射80:80
将无效。
还要确保您的http服务器侦听0.0.0.0:80
而不是localhost或其他端口。
答案 2 :(得分:0)
就我而言,我发现我要设置的服务的所有网络均为internal: true
。奇怪的是,在进行docker stack deploy
我已经打开https://github.com/docker/compose/issues/6534来询问正确的错误消息,这样对其他人来说很明显。
答案 3 :(得分:0)
我使用的是
const clonedData = [...yourData]; // use {} if it's an object
显然
docker-compose run命令不会创建服务配置中指定的任何端口。
请参见https://docs.docker.com/compose/reference/run/
我开始使用
docker-compose run app
问题解决了。