Apache Docker CentOS映像不自动启动httpd
我正在尝试用Apache和PHP程序运行一个简单的Docker映像。如果我跑的话,效果很好Apache Docker CentOS映像不自动启动httpd,apache,docker,centos,dockerfile,Apache,Docker,Centos,Dockerfile,我正在尝试用Apache和PHP程序运行一个简单的Docker映像。如果我跑的话,效果很好 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将在容器存在时启动。我在docker文件中尝试了一系列不同的CMDs CMD /etc/init.d/httpd start C
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将在容器存在时启动。我在docker文件中尝试了一系列不同的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启动后都会存在docker实例
我遗漏了一些非常明显的东西吗?您需要直接运行apache(httpd)-不应该使用init.d脚本
两种选择:
/usr/sbin/apache2-DFOREGROUND…
(或CentOS中的/usr/sbin/httpd)/sbin/init
作为入口点来启动所有服务(包括配置为自动运行的apache)在
Dockerfile
的底部添加这一行,以便在CentOS的前台运行Apache
ENTRYPOINT[“/usr/sbin/httpd”、“-D”、“前台”]
在centOS上运行httpd的简单Dockerfile
FROM centos:latest
RUN yum update -y
RUN yum install httpd -y
ENTRYPOINT ["/usr/sbin/httpd","-D","FOREGROUND"]
用于构建图像和运行容器的命令
建造
docker build . -t chttpd:latest
使用新映像运行容器
docker container run -d -p 8000:80 chttpd:latest
谢谢Jiri!使用
ENTRYPOINT[“/usr/sbin/httpd”]
和CMD[“-D”,“前台”]
可以进行治疗仅供参考,有些人还运行:/sbin/some_deamon&&tail-f/var/log/foo@yvindSkaar和&tail-f…
是一个很好的攻击,但请注意,它将在日志旋转事件时退出容器,因此,我不建议将其用于/var/log/apache2/access.logThankØyvindSkaar之类的日志文件,尽管Jiri的方法对于httpd非常有用,但我将您的示例用于不同的tigase容器。它工作得很好。也适用于跟踪日志文件;可能并没有logrotate(也并没有cron来运行它),所以您的磁盘将充满日志。使用CustomLog的管道日志功能会更好。看看httpd附带的rotatelogs(8)