Eu tenho o seguinte Dockerfile que deve iniciar uma máquina centos e instalar o httpd:
FROM centos:centos6.6
RUN yum install -y httpd
RUN chkconfig httpd on;
RUN /etc/init.d/httpd start
EXPOSE 80
CMD ["/bin/bash"]
Eu construo a imagem:
docker build --no-cache -t centos_http .
A construção diz:
...
Step 4/6 : RUN /etc/init.d/httpd start
---> Running in 0766e84ec292
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2 for ServerName
[ OK ]
...
Successfully built 5380a0bacdfb
Mas se eu executar a imagem:
docker run -p 8090:80 -it 5380
[root@eda7400a46a9 /]# ps -ef | grep httpd | grep -v grep
[root@eda7400a46a9 /]#
httpd não está funcionando! se eu executar manualmente /etc/init.d/httpd start, dentro da imagem, funciona bem ...
Responder1
Você está agindo completamente errado. RUN
O comando será executado apenas durante a construção. Você deve usar algo como o seguinte
FROM centos:6.6
RUN yum install -y httpd
EXPOSE 80
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
Você também pode dar uma olhadaDockerfile oficial do apache