我有一个运行Caddy的docker容器和另一个Web服务器。
在Dockerfile
我有
EXPOSE 80 10240 # 10240 is the port of the other webserver.
我像这样运行码头工具(不要问我为什么需要EXPOSE
和 -p
)。
docker run -p 80:80 -p 10240:1024 -it <hash>
这将启动两台服务器。在我的主机上(它是Mac btw)我可以连接到localhost:10240
罚款。但是,如果我连接到localhost:80
,我会得到一个空响应(连接断开)。
docker容器中的Netstat显示:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:10240 0.0.0.0:* LISTEN 19/node
tcp6 0 0 :::80 :::* LISTEN 9/caddy
这里开始变得怪异。如果我在 docker容器中curl -L localhost
,它可以正常工作 - 我从10240服务器获取网页。
如果我在docker容器中curl -L 127.0.0.1
,则返回404 Site 127.0.0.1 is not served on this interface
。好的。
如果我{<1}}来自外容器 ,则返回curl -L 127.0.0.1
。所以我的请求 以某种方式通过了,但是Caddy从容器外部删除了404 Site 127.0.0.1 is not served on this interface
个请求,而且它没有来自它内部。我已启用日志记录但它没有打印任何内容。
谁能告诉我到底是怎么回事?所有这些码头端口转发的东西都很荒谬。
这是我的Caddy文件(我已尝试过大约10亿个localhost
,localhost
等的其他组合:
127.0.0.1
答案 0 :(得分:0)
我不确定,但我怀疑这是因为Docker for Mac的网络是kind of broken。我放弃了Caddy并尝试用Traefik做同样的想法,也没有工作(虽然它给出了#34;网关错误&#34;而不是完全放弃连接)。
只要将所有内容移至Linux,它就能完美运行。