web-dev-qa-db-ja.com

Ubuntu DockerコンテナでApache2を自動的に起動する方法は?

Apacheを自動的に起動するDockerfileを作成しようとしています。何も機能していません。ただし、コンテナにログインしてservice Apache2 start できます。なぜDockerfileからそのコマンドを実行できないのですか?

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
18
Rayhan Muktader

問題はこちらです:CMD service Apache2 startこのコマンドプロセスを実行するとApache2はシェルから切り離されます。ただし、Dockerはメインプロセスが動作している間のみ機能します。

解決策は、Apacheをforegroundで実行することです。 Dockerfileは次のようになっている必要があります(最後の行のみが変更されています)。

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
38
Bukharov Sergey

私にとって、CMDの最後の行は間違っていました:

# it helped me
CMD ["apachectl", "-D", "FOREGROUND"]
6
Radek