2015-07-23 1 views
2

Окружающей среды:Apache не HTTPd себя должным образом при запуске Docker изображения

- Docker version 1.6.2, build ba1f6c3/1.6.2 
- Centos 7 
- apache httpd 2.4.6 

Я создал Docker образ, Apache HTTPD. Внутри запускается простой скрипт оболочки, запускающий сервер httpd. Мой start-httpd.sh

httpd -k start 
#to keep process running 
tail -f /dev/null 

Теперь конфигурация я скопировать докер образ похож на тот, который я работать на моей основной хост-машине.

Пример конфигурации из балансировки нагрузки:

<VirtualHost localhost:8000> 
    ServerName localhost 
    ProxyRequests off 
    ProxyPreserveHost on 
    ErrorLog logs/error_domain.log 
    SetHandler balancer-manager 

<Proxy *> 
     Order deny,allow 
     Allow from all 
    </Proxy> 
<Location /balancer-manager> 
     SetHandler balancer-manager 
     Order allow,deny 
     Allow from all 
</Location> 
    <Proxy balancer://idp> 
     BalancerMember http://punvm-core05.sigmasys.net:9091 
     BalancerMember http://punvm-core06.sigmasys.net:8091 status=+H 
     #ProxySet lbmethod=byrequests 
     ProxySet lbmethod=bytraffic 
    </Proxy> 
    ProxyPass /homepage balancer://idp 
    ProxyPassReverse /homepage balancer://idp 
    ProxyPass /assets balancer://idp/assets 
    ProxyPassReverse /assets balancer://idp/assets 
    ProxyPass /saml-idp balancer://idp/saml-idp 
    ProxyPassReverse /saml-idp balancer://idp/saml-idp 
</VirtualHost> 

Теперь это, как я запустить Docker изображение,

docker run -d -p 10000:8000 auth/loadbalancer /home/start-httpd.sh 

Я могу получить доступ к http://localhost:10000 но страница я ожидаю отличается

Прикрепление моментального снимка ожидаемого и неожиданного веб-сайта httpd

Ожидаемое изображение, это от моего хозяина машины:

enter image description here

Неожиданное изображение при доступе апача отображенный к порту внутри докер, как указано в вышеприведенной команде из докер

enter image description here

Кроме того, когда я войти в систему в контейнер и сделать команду curl, в ответ я могу увидеть страницу балансировки нагрузки, но из-за пределов контейнера я вижу ответ неожиданного изображения.

Пожалуйста, объясните, почему это происходит, я что-то пропустил.

+0

Спасибо ... Я нашел из вашего вопроса, что я должен добавить «tail -f/dev/null» :) По какой-то причине опция -DFOREGROUND в Dockerfile репозитория apache не будет работать для меня. – SidJ

+0

да вот как я держу свой контейнер в рабочем состоянии .. :) – Sohan

ответ

1

Я могу решить эту проблему. я должен был выполнить команду, как это,

docker run -d --net=host auth/loadbalancer /home/start-httpd.sh 

Так мне не нужен никакое отображения порта здесь, весь внутренний контейнер перевода осуществляется автоматически при использовании этого.