我是 Docker 新手,目前正在学习本教程:
我创建了必要的文件,并使其显示“Hello World!”在本地主机上:80。
除此之外,我尝试使用对我的文件夹的直接引用来安装容器,以便我可以更新index.php文件以模拟开发环境,然后出现此错误:
我所做的只是更改图像的运行方式,以便我可以更新 index.php 文件的内容,并在按 F5 时查看网页中反映的更改。
当前在 Windows 10 Pro 上使用 Docker for Windows
Windows 版 Docker 正在运行
我严格遵循每一个步骤,这样我就不会被愚弄,而且它似乎对我不起作用。
为了回答 Mornor 的问题,这是
docker ps
的结果
这里是
docker logs [container-name]
既然我现在更好地了解了幕后发生的事情,我该如何解决日志中所示的问题?
这是我的
Dockfile
以及我执行的运行图像的命令:
docker run -p 80:80 -v /wmi/tutorials/docker/src/:/var/www/html/ hello-world
因此您会看到该文件存在:
错误来自 Apache,它试图向您显示目录内容,因为没有可用的索引文件。您的 docker 映射无法正常工作,或者您的 apache 上没有安装 php 支持。您正在访问 http://localhost,请尝试 http://localhost/index.php。
如果您遇到相同的错误,则问题出在映射上。如果您获得 php 代码,则问题出在 Apache 中缺少 PHP 支持。
我知道答案已经晚了,但答案很简单: 当使用 docker 并且您有 SELinux 时,会发生这种情况,请注意主机不了解容器 SELinux 策略。 添加 z
docker run -p 80:80 -v /wmi/tutorials/docker/src/:/var/www/html/:z hello-world
这将自动执行您需要执行的
chcon ....
。
我认为你错误地表达了你的
index.php
。要调试它,您可以做的是首先检查 index.php
是否确实安装在容器内。 docker run -p 80:80 -v /wmi/tutorials/docker/src/:/var/www/html/ hello-world bash -c 'ls -lsh /var/www/html/'
(如果不起作用,请使用
sh
代替 bash
)。如果你确实能看到一个index.php
,那么恭喜你的文件已正确挂载,并且错误不是来自 Docker,而是来自 Apache。
如果
index.php
不存在,那么你必须检查你的 Dockerfile。您挂载 src/
,检查 /src
是否与您的 Dockerfile 位于同一目录中。
让我们了解最新情况:)
检查html文件夹是否有适当的权限。 谢谢你
Dockerfile 档案包含主机页面的项目,包含 Dockerfile 档案和索引目录,以及索引中的索引.html