Docker:本地主机没有发送任何数据

4
这是我的Dockerfile内容:-
FROM php:7.0-apache
COPY src/ /var/www/html/public
VOLUME src/ /var/www/html/public
EXPOSE 800

我运行了以下这个命令。

docker run -p 80:800 final

然后我尝试访问本地主机,但是出现了 'ERR_EMPTY_RESPONSE' 错误。

早些时候它会给出403错误。

操作系统 - Mac

[编辑] 添加更多细节

在docker终端中发现错误

浏览器中的403错误


你能告诉我们你正在尝试运行哪个Web服务器吗?(在Dockerfile中添加缺失的FROM行应该足以复现)。 - Neo Anderson
嗨@NeoAnderson,请检查一下,之前它被隐藏了。 - Utkarsh Agrawal
Apache 可能不会在端口 800 上监听...!? - deceze
@deceze 我最初尝试使用端口80,然后在终端上运行了80:80,但是出现了403错误。 - Utkarsh Agrawal
1
正如错误所述,您的目录中似乎没有任何index.*文件,因此Apache不知道为localhost:8000/提供什么内容。 - deceze
@deceze 哦,现在我明白了。我搜索了autoindex:error,我找到了你发现的问题。感谢通知 :) - Utkarsh Agrawal
1个回答

3

php:7.0-apache镜像默认监听的端口是80,而Dockerfile中使用的EXPOSE并没有改变这一点。

通常情况下,您没有理由尝试更改容器的默认监听端口,因为容器有自己的IP地址,您不应该遇到端口冲突问题。

端口选择可能会成为主机上的问题,在这方面,您可以选择发布任何未被使用的端口。

如果您只需在docker run命令中交换80800,则可以通过localhost:800访问Web应用程序。

以下命令将创建一个DNAT规则,从您的主机端口<src> 到容器端口 80,使得您可以在localhost:<src>访问Web应用程序。

docker run -p <src>:80 final 

编辑回答禁止问题更新:

php:7.0-apache镜像将在/var/www/html/下查找index.*。你的Dockerfile将源代码复制到/var/www/html/public


嗨Neo,刚刚添加了,请检查一下。第一张截图是我的终端界面。 - Utkarsh Agrawal
Neo,问题已经解决,正如@deceze所建议的那样。非常感谢您提供以上信息。 :) - Utkarsh Agrawal
1
是的,得到了相同的答案:确保你复制的索引在/var/www/html/下。 - Neo Anderson
是的,现在我明白了。 :) - Utkarsh Agrawal
https://stackoverflow.com/help/someone-answers - Neo Anderson
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接