Образ Docker Centos 7 под управлением Apache2 "DocumentRoot ... не читается" - PullRequest
0 голосов
/ 31 августа 2018

У меня есть док-контейнер с изображением Centos 7. Все, что нужно сделать, это запустить простой сервер 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

Я сделал несколько базовых проверок:

  • Папка существует
  • Разрешения: `` `rwx r_x r_x root root```` для каждой папки / var / www / html
  • Попробовал chown -R apache /var/www (солома не должна оставаться без сцепления!)
  • SELinux отключен (... или это?)

Когда я вхожу в контейнер с точкой входа в bash, я могу запустить apache от имени root с помощью /sbin/httpd -D FOREGROUND, и все работает как положено.

Так что я думаю, что это почти наверняка вещь разрешений. Google нашел много страниц с моей ошибкой, например, Перезапуск Apache приводит к тому, что DocumentRoot должен быть каталогом, даже если он является каталогом и проблемы с привилегиями отсутствуют Эта конкретная страница подробно описывает, что я получаю, и решением почти на каждой странице является настройка SELinux. Однако SELinux отключен. Даже в этой ссылке есть комментарий от ОП

Моя версия linux не является Security Enhanced Linux, поэтому без понимания я все равно попробовал: без эффекта.

И все же они приняли решение, которое было сконфигурировано SELinux.

Я думаю, что что-то упустил, почти наверняка, связанный с SELinux, но я не могу понять это. Образ докера имеет следующие (явно отсутствующие) настройки SELinux:

  • / etc / selinux содержит только semanage.conf и tmp / (пусто)
  • / usr / sbin не содержит se * исполняемых файлов
  • rpm -qa | grep selinux
    • libselinux-2.5-12.el7.x86_64
  • / etc / sysconfig / selinux не существует
    • Итак, в Dockerfile я попробовал RUN echo "SELINUX=disabled" > /etc/sysconfig/selinux
  • делает yum install -y policycoreutils устанавливает sestatus в / usr / sbin. Бегущий сестатус дает
    • SELinux status: disabled
    • С / без / etc / sysconfig / selinux

Похоже, что SELinux отключен, но ошибка выглядит так, как будто она включена.

1 Ответ

0 голосов
/ 03 сентября 2018

Проблема в этом случае была связана с тем, как был запущен контейнер.

Я использую docker-compose для запуска этого конкретного контейнера, но пути для сопоставления томов были неправильными.

Я до сих пор не уверен, почему это приводит к тому, что apache не запускается так, как это происходит, но исправление путей решило проблему.

...