Docker CentOS image ne démarre pas automatiquement httpd

j'essaie d'exécuter une simple image Docker avec Apache et un programme PHP. Il fonctionne très bien si je run

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

puis lancer manuellement Apache

service httpd start

cependant je ne peux pas faire démarrer httpd automatiquement quand

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

Apache va démarrer puis container existe. J'ai essayé un tas de différents CMD s dans mon fichier docker

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

Cependant chaque instance docker existera après apache commence

est-ce que je manque quelque chose de vraiment évident?

22
demandé sur halfer 2014-01-22 14:23:29

2 réponses

Vous devez exécuter apache (httpd) directement - vous ne devez pas utiliser init.d script.

deux options:

  1. vous devez exécuter apache en premier plan: /usr/sbin/apache2 -DFOREGROUND ... (ou /usr/sbin/httpd dans CentOS)
  2. vous devez démarrer tous les services (y compris apache configuré comme auto-run) en exécutant /sbin/init comme point d'entrée.
http://www.kstaken.com/blog/2013/07/06/how-to-run-apache-under-docker/

18
répondu Jiri 2014-01-22 17:23:28

Ajouter cette ligne dans le bas de votre Dockerfile exécuter Apache au premier plan sur CentOS

ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
11
répondu Hemerson Varela 2016-01-21 15:37:01