Docker CentOS映像不会自动启动httpd
问题描述:
我想用Apache和PHP程序运行简单的Docker映像。它工作正常,如果我跑Docker CentOS映像不会自动启动httpd
docker run -t -i -p 80:80 my/httpd /bin/bash
然后手动启动Apache
service httpd start
但我不能得到的httpd启动而自动运行
docker run -d -p 80:80 my/httpd
Apache会启动,然后容器时存在。我在泊坞窗文件尝试了很多不同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
但是每一次的Apache后搬运工例如会存在启动
我缺少的东西真的很明显?
答
你需要直接运行apache(httpd) - 你不应该使用init.d脚本。
两个选项:
- 你必须在前台运行Apache:
/usr/sbin/apache2 -DFOREGROUND ...
(或/ usr/sbin目录/ CentOS中的httpd) - 你必须启动所有服务(包括Apache配置为自动运行)通过执行
/sbin/init
作为入口点。
看到这个好贴:http://www.kstaken.com/blog/2013/07/06/how-to-run-apache-under-docker/
答
在底部加入这行你Dockerfile
的运行Apache在前台在CentOS
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
感谢吉日! 使用'ENTRYPOINT [“/ usr/sbin/httpd”]'&'CMD [“-D”,“FOREGROUND”]'treat a – dwitz
仅供参考,一些人也运行:/ sbin/some_deamon && tail -f/var/log/foo –
@ØyvindSkaar'&& tail -f ...'是一个很好的黑客,但请注意它会在日志轮转事件中退出容器,所以我不会推荐它用于/ var/log/apache2 /access.log – Jiri