2017-06-05 77 views
5

我想創建一個Dockerfile,它將自動啓動Apache。沒有任何工作。但是,如果我登錄容器並運行service apache2 start它的工作。爲什麼我不能從Dockerfile運行該命令?如何在ubuntu docker容器中自動啓動apache2?

FROM ubuntu 

# File Author/Maintainer 
MAINTAINER rmuktader 

# Update the repository sources list 
RUN apt-get update 

# Install and run apache 
RUN apt-get install -y apache2 && apt-get clean 

#ENTRYPOINT ["/usr/sbin/apache2", "-k", "start"] 


#ENV APACHE_RUN_USER www-data 
#ENV APACHE_RUN_GROUP www-data 
#ENV APACHE_LOG_DIR /var/log/apache2 

EXPOSE 80 
CMD service apache2 start 

回答

9

問題就在這裏:CMD service apache2 start當你執行這條命令的過程apache2從外殼脫離。但是Docker只在主進程還活着的時候才能工作。

決定是運行apache在foregroudDockerfile必須看起來像這樣:(只有最後一行發生了變化)。

FROM ubuntu 

# File Author/Maintainer 
MAINTAINER rmuktader 

# Update the repository sources list 
RUN apt-get update 

# Install and run apache 
RUN apt-get install -y apache2 && apt-get clean 

#ENTRYPOINT ["/usr/sbin/apache2", "-k", "start"] 


#ENV APACHE_RUN_USER www-data 
#ENV APACHE_RUN_GROUP www-data 
#ENV APACHE_LOG_DIR /var/log/apache2 

EXPOSE 80 
CMD apachectl -D FOREGROUND 
+0

它沒有工作。我複製並粘貼你的Dockerfile,運行'docker build -t my_img .',運行'docker run -ti -p80:80 --name'test2'my_img/bin/bash',但apache沒有運行。 –

+0

我試過這種方法,它適用於我。嘗試從您的命令中刪除'/ bin/bash' –

+0

它工作正常!這是否適用於多種服務? –

相關問題