在Docker容器上启动Apache

我正在和Docker一起玩Apache和PHP来构build图像,但是Apache的antomatic启动有一个问题。 这是Dockerfile:

FROM ubuntu:16.04 RUN apt-get update # Apache RUN apt-get -y install apache2 # Apache config RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf RUN apache2ctl configtest RUN a2dissite 000-default COPY otpuskatame_backend.conf /etc/apache2/sites-available RUN a2ensite otpuskatame_backend RUN a2dissite 000-default RUN rm /etc/apache2/sites-available/000-default.conf # PHP RUN apt-get -y install php libapache2-mod-php php-mcrypt # Load container CMD service apache2 start EXPOSE 80 

该图像已经成功build立,但是用下面的命令运行时会中断:

 sudo docker run -d -v /var/www/project/:/var/www:rw -p 80:80 --name=lamp1 lamp1 

状态:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a3679275b1d lamp1 "/bin/sh -c 'servi..." 8 seconds ago Exited (0) 6 seconds ago lamp1 

日志看起来不错:

  * Starting Apache httpd web server apache2 

如果我从Dockerfile中删除CMD行,然后login容器并运行服务apache2手动启动一切工作正常。 但是如何自动启动它?

这是因为docker的主要服务正在因为这个docker正在退出而被杀死。为此,你需要在前台运行服务

尝试添加此dockerfile并重build它

 CMD /usr/sbin/apache2ctl -D FOREGROUND 

有关更多详情,请参阅以下网站

https://writing.pupius.co.uk/apache-and-php-on-docker-44faef716150