web-dev-qa-db-fra.com

Comment démarrer Apache2 automatiquement dans un conteneur docker ubuntu?

J'essaie de créer un fichier Docker qui lancera Apache automatiquement. Rien n'a fonctionné. Mais si je me connecte au conteneur et exécute service Apache2 start cela fonctionne. Pourquoi ne puis-je pas exécuter cette commande à partir de mon fichier 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
13
Rayhan Muktader

Le problème est ici: CMD service Apache2 start Lorsque vous exécutez cette commande, le processus Apache2 sera détaché du shell. Mais Docker ne fonctionne que lorsque le processus principal est actif.

La solution consiste à exécuter Apache dans le foreground. Dockerfile doit ressembler à ceci: (seule la dernière ligne a été modifiée).

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

Pour moi, la dernière ligne avec CMD était fausse:

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