J'essaie d'exécuter une image Docker simple avec Apache et un programme PHP. Cela fonctionne très bien si je lance
docker run -t -i -p 80:80 my/httpd /bin/bash
puis démarrez manuellement Apache
service httpd start
mais je ne peux pas obtenir httpd pour démarrer automatiquement lors de l'exécution
docker run -d -p 80:80 my/httpd
Apache démarre alors le conteneur 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 est
#!/bin/bash
/etc/init.d/httpd start
Cependant, chaque instance de docker existera après le démarrage d'Apache
Suis-je en train de manquer quelque chose de vraiment évident?
Vous devez exécuter Apache (httpd) directement - vous ne devez pas utiliser le script init.d.
Deux options:
/usr/sbin/Apache2 -DFOREGROUND ...
(ou/usr/sbin/httpd dans CentOS)/sbin/init
comme point d'entrée.Voir cet article de Nice: http://www.kstaken.com/blog/2013/07/06/how-to-run-Apache-under-docker/
Ajoutez cette ligne au bas de votre Dockerfile
pour exécuter Apache au premier plan sur CentOS
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]