2017-02-02 7 views
1

Я работаю над версией PyroCMS для докеров. Это repository У меня есть последние файлы. Как видите, у меня есть стек: CentOS 7 (с Supervisord), MySQL, Apache и PHP. Это docker-compose.yml файл:Контейнерная остановка из-за: "httpd: Не удалось открыть файл конфигурации /etc/httpd/conf/httpd.conf: Нет такого файла или каталога", почему?

version: '2.1' 
services: 
    httpd: 
     build: docker/httpd 
     ports: 
      - "8080:80" 
     volumes_from: 
      - php-fpm 
    php-fpm: 
     build: 
      context: docker/php-fpm 
      args: 
       INSTALL_XDEBUG: "false" 
       INSTALL_MONGO: "false" 
       INSTALL_REDIS: "false" 
       INSTALL_HTTP_REQUEST: "false" 
       INSTALL_UPLOAD_PROGRESS: "false" 
       INSTALL_XATTR: "false" 
     depends_on: 
      db: 
       condition: service_healthy 
    db: 
     image: mysql 
     healthcheck: 
      test: "exit 0" 
     environment: 
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} 
      MYSQL_DATABASE: ${MYSQL_DATABASE} 
      MYSQL_USER: ${MYSQL_USER} 
      MYSQL_PASSWORD: ${MYSQL_PASSWORD} 

Это Dockerfile для httpd изображения:

FROM reynierpm/centos7-supervisor 
RUN yum install -y httpd nano && \ 
    yum clean all && rm -rf /tmp/yum* 
RUN rm -f /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/* /etc/httpd/conf.modules.d/* 
COPY container-files/
EXPOSE 80 

У меня возникли проблемы с момента httpd контейнера выхода со статусом 1 и увидеть журналы я получил следующее :

httpd_1 | httpd: Could not open configuration file /etc/httpd/conf/httpd.conf: No such file or directory 

На первый взгляд, вы говорите:

вы удаляете файлы !!! в этой строке RUN rm -f /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/* /etc/httpd/conf.modules.d/*

И вы правы, но если вы внимательно посмотрите, вы увидите я копирую его обратно (потому что я бегу в минимальной конфигурации Apache) в строке:

COPY container-files/

Я не уверен, почему файл не найден и почему контейнер останавливается и выходит, может ли кто-нибудь взглянуть на это и сообщить, где я делаю ошибку, если он есть?

+1

Я бы развернул оболочку bash с новым контейнером контейнера службы «httpd» и вручную исследовал каталоги. Вы можете обнаружить, что команда 'COPY' не помещает файлы конфигурации там, где вы ожидаете их. Для этого: 'docker-compose run --rm httpd bash'. Я предполагаю, что изображение centos установлено bash. – fideloper

+0

проверьте, что показывает 'docker run -it httpd bash' и ls, чтобы проверить, присутствует ли ваш файл. – user2915097

ответ

1

У вас есть это в вашем PHP-FPM Dockerfile:

VOLUME ["/data/www", "/etc/httpd"] 

И это в Докер-compose.yml:

httpd: 
    build: docker/httpd 
    ports: 
     - "8080:80" 
    volumes_from: 
     - php-fpm 

Так что ваши HTTPD изображение заканчивается с монтировании на /etc/httpd. Содержимое этого тома отменяет все, что было запечено в изображении httpd во время сборки.

+0

Да, я это выясню всего несколько минут назад, но в любом случае там вы найдете свои очки! – ReynierPM