首页 > 解决方案 > 运行 Apache2 的 Docker Centos 7 映像“DocumentRoot ... 不可读”

问题描述

我有一个运行 Centos 7 映像的 docker 容器。它需要做的就是运行一个简单的 Apache2 服务器。当容器启动时,它会立即退出:

AH00526: Syntax error on line 119 of /etc/httpd/conf/httpd.conf:
DocumentRoot '/var/www/html' is not a directory, or is not readable

我做了一些基本的检查:

当我使用 bash 入口点进入容器时,我可以以 root 身份启动 apache /sbin/httpd -D FOREGROUND,一切都按预期工作。

所以我认为它几乎可以肯定是权限问题。谷歌搜索发现很多页面都有我的错误,例如 Apache 重新启动导致 DocumentRoot 必须是一个目录,即使它是一个目录并且似乎没有权限问题 这个特定页面详细描述了我得到的内容,几乎每个页面中的解决方案都是配置 SELinux . 但是 SELinux 被禁用。即使在那个链接中,也有来自 OP 的评论

我的 linux 版本不是 Security Enhanced Linux,所以在不理解的情况下我还是尝试了它:没有效果。

然而他们接受了配置 SELinux 的解决方案。

我想我遗漏了一些东西,几乎可以肯定与 SELinux 相关,但我无法弄清楚。docker 映像具有以下(明显缺乏)SELinux 设置:

看起来 SELinux 确实被禁用了,但错误看起来很像它已启用。

标签: apachedockercentosselinux

解决方案


这种情况下的问题是由于容器的启动方式造成的。

我使用 docker-compose 来启动这个特定的容器,但卷映射的路径不正确。

我仍然不确定为什么这会导致 apache 无法以它的方式启动,但更正路径解决了这个问题。


推荐阅读