我是Docker的新手,目前正在学习本教程:
我创建了必要的文件,然后我编写了“Hello World!”。在localhost:80。
除此之外,我尝试使用对我的文件夹的直接引用来挂载容器,这样我就可以更新index.php文件来模仿开发环境,然后我会遇到这个错误:
我所做的只是更改图像的运行方式,以便我可以更新index.php文件的内容,并在点击F5时查看网页中的更改。
目前在Windows 10 Pro上使用Docker for Windows
Docker for Windows正在运行
我严格遵循每一个步骤,所以我不会让自己被愚弄,看起来它对我不起作用。
要回答Mornor的问题,以下是 docker ps
此处为 docker logs [container-name]
既然我现在更好地了解幕后发生了什么,我该如何解决日志中说明的问题呢?
这是我的 Dockfile
我执行的命令来运行我的图像:
docker run -p 80:80 -v /wmi/tutorials/docker/src/:/var/www/html/ hello-world
所以你看到该文件存在:
答案 0 :(得分:1)
错误来自Apache,它试图向您显示目录内容,因为没有可用的索引文件。您的docker映射无法正常工作,或者您的apache没有安装php支持。您正在访问http://localhost,请尝试http://localhost/index.php。
如果出现相同的错误,则问题在于映射。如果你得到php代码,问题就是缺少Apache中的PHP支持。
答案 1 :(得分:1)
我认为你错误地盯着你的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在同一目录中。
让我们更新:)
答案 2 :(得分:1)
我知道答案很晚,但是答案很简单: 这种情况发生在使用docker并且拥有SELinux时,请注意主机不了解容器SELinux策略。 通过添加z
docker run -p 80:80 -v /wmi/tutorials/docker/src/:/var/www/html/:z hello-world
这将自动执行您需要做的chcon ....
。
答案 3 :(得分:0)
检查html文件夹是否有适当的权限。 谢谢