2014-01-22 9 views
21

Apache와 PHP 프로그램으로 간단한 Docker 이미지를 실행하려고합니다. 그런 다음 컨테이너가 존재 시동됩니다Docker CentOS 이미지가 자동으로 시작되지 않습니다. httpd

docker run -d -p 80:80 my/httpd 

아파치를 실행할 때 내가

docker run -t -i -p 80:80 my/httpd /bin/bash 

가 수동으로 아파치

service httpd start 

그러나 나는이 자동으로 시작하세요 아파치 캔트 시작 실행하면 잘 작동합니다. 내 고정 표시기 파일에 다른 CMD s의 무리를 시도

CMD /etc/init.d/httpd start 
CMD ["service" "httpd" "start"] 
CMD ["/bin/bash", "/etc/init.d/httpd start"] 
ENTRYPOINT /etc/init.d/httpd CMD start 
CMD ./start.sh 

start.sh는

#!/bin/bash 
/etc/init.d/httpd start 

그러나 고정 표시기 인스턴스가 아파치 후 존재하게됩니다 모든 시간은

내가 모르는 뭔가가 시작이다 정말 명백한가요?

답변

19

apache (httpd)를 직접 실행해야합니다. init.d 스크립트를 사용하면 안됩니다.

두 가지 옵션 : /usr/sbin/apache2 -DFOREGROUND ... (CentOS는 나는/usr/sbin에/아파치)이 자동 실행으로 구성 아파치를 포함한 (모든 서비스를 시작해야

  • 을 :

    1. 당신은 전경에 아파치를 실행해야) 진입 점으로 /sbin/init을 실행하여.

    이 좋은 게시물을 참조 : http://www.kstaken.com/blog/2013/07/06/how-to-run-apache-under-docker/

  • +2

    감사 지리산에 전경에서 아파치를 실행하도록 Dockerfile의 바닥이 줄을 추가! 'ENTRYPOINT [ "/ usr/sbin/httpd"]'사용'&'CMD [ "-D", "FOREGROUND"]'대우를받습니다 – dwitz

    +0

    그냥 사람들은 또한 다음을 실행합니다 :/sbin/some_deamon && tail-f/var/log/foo –

    +1

    @ ØyvindSkaar'&& tail -f ...'좋은 해킹이지만 로그 회전 이벤트에서 컨테이너가 종료되므로/var/log/apache2와 같은 로그 파일에는 사용하지 않는 것이 좋습니다. /access.log – Jiri

    10

    CentOS는

    ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]