Salut à tous,
Je cherche à faire un simple container docker avec apache en vue d'exposer une simple page HTML de maintenance mais je galère.
Une fois exécuté (avec option -d) mon container s'arrête immédiatement, je suppose parce que apache s'arrête mais je ne sais pas précisément pourquoi.
Pouvez vous m'aider à aboutir à un résultât qui fonctionne ?
Voici le contenu de mon Dockerfile:
FROM httpd:2.4
RUN mkdir -p /var/www/ssl
COPY ./vhostam /usr/local/apache2/conf/httpd.conf
COPY ./content/ /usr/local/apache2/htdocs/
COPY ./ssl/ /var/www/ssl/
Voici l'aborescence du build:
/
├── content
│ ├── am-maintenance-SI.jpg
│ └── index.html
├── Dockerfile
├── ssl
│ ├── _.am.fr.crt
│ ├── private.key
│ ├── wildcard-em.fr.pem
│ └── wildcardem.cert
└── vhostam
Le contenu de mon vhost:
<VirtualHost *:443>
ServerName *.am.fr
SSLEnable
DocumentRoot /var/www/ssl/
</VirtualHost>
le resultat de ma commande docker-run :
root@test-www-1:~# docker run -p 443:443 -dit --name sitedown maintenance
b16e6c57f7a51c9384cb7de1bfa14f963fcbf7d7e0eecb021612e70e74e0601f
Le docker ps immediatement après indique qu'aucun container ne tourne mais le docker ps -a m'indique que le container s'est bien executé.
root@test-www-1:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b16e6c57f7a5 maintenance "httpd-foreground" 14 hours ago Exited (1) 14 hours ago
Merci de votre aide
# question : Quand exécutes tu apache ?
Posté par Nodeus . Évalué à 2. Dernière modification le 27 mai 2020 à 12:03.
Bonjour dans ton container quand lance tu apache ?
# RUN
Posté par eric gerbier (site web personnel) . Évalué à 1.
il te manque une commande RUN
[^] # Re: RUN
Posté par Marc Quinton . Évalué à 2. Dernière modification le 27 mai 2020 à 15:24.
tu peux essayer de le lancer en intéractif :
docker run --rm -p 443:443 it --name sitedown maintenance
cela va te permettre de voir les logs apache.
[^] # Re: RUN
Posté par Marc Quinton . Évalué à 2. Dernière modification le 27 mai 2020 à 15:25.
dans la dernière commande "s/it/-it/"
# Merci
Posté par Orwell . Évalué à 1.
Merci pour vos réponses.
En effet la commande de Marc > docker run --rm -p 443:443 it --name sitedown maintenance
permet de voir les logs apache.
J'ai modifié mon vhost de la façon suivante car au début l'erreur était un truc du genre module NPM not loaded
Désormais l'erreur est
Connaissez vous un docker avec un config apache SSL directement exploitable?
Ou avez vous une solution simple pour corriger ce pb et faire ne sorte que ça fonctionne?
Merci
[^] # Re: Merci
Posté par Marc Quinton . Évalué à 2.
tu peux ouvrir un shell interactif avec cette commande :
docker run --rm --entrypoint /bin/bash -it httpd:2.4
par la suite, on peut voir :
il te faut donc faire un include avec le bon répertoire pour le module SSL.so
[^] # Re: Merci
Posté par Orwell . Évalué à 1.
Ah d'accord, tu veux dire modifier la directive Load module en pointant le bon emplacement ?
Merci bcp.
[^] # Re: Merci
Posté par Orwell . Évalué à 1.
Voici ce qu'il me dit maintenant.
C'est étrange car j'ai fait un netstat -tulpn pour voir si le port 443 était déjà occupé mais il ne l'est pas.
[^] # Re: Merci
Posté par Marc Quinton . Évalué à 2. Dernière modification le 28 mai 2020 à 21:49.
tu peux essayer -p 4443:443 pour mettre le serveur sur un port HTTPS alternatif.
[^] # Re: Merci
Posté par Orwell . Évalué à 1.
Merci Marc
Voici le resultat, toujours pareil.
J'ai essayé d'ajouter une directive EXPOSE 443 dans mon docker file mais rien n'y fait.
[^] # Re: Merci
Posté par Anonyme . Évalué à 2.
Tu peux voir les logs d’un container avec
docker logs
aussi.# Merci à vous tous
Posté par Orwell . Évalué à 2.
Merci à vous tous
J'ai finalement trouvé une autre solution en construisant un conteneur à partir d'une image ubuntu.
```
FROM ubuntu:18.04
Apache ENVs
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_SERVER_NAME web.monsite.fr
ENV APACHE_SERVER_ADMIN moi@monsite.fr
ENV APACHE_SSL_CERTS /var/www/ssl/wildcardem.cert
ENV APACHE_SSL_PRIVATE /var/www/ssl/private.key
ENV APACHE_SSL_PORT 443
ENV APACHE_LOG_LEVEL info
ENV APACHE_SSL_LOG_LEVEL info
ENV APACHE_SSL_VERIFY_CLIENT optional
ENV APACHE_HTTP_PROTOCOLS http/1.1
ENV APPLICATION_URL https://${APACHE_SERVER_NAME}:${APACHE_SSL_PORT}
Install services, packages and do cleanup
RUN apt update \
&& apt install -y apache2 \
&& apt install -y curl \
&& apt install -y python3-pip \
&& apt install -y git \
&& rm -rf /var/lib/apt/lists/*
RUN rm -rf /etc/apache2/sites-available/000-default.conf
RUN a2enmod ssl \
&& a2enmod headers \
&& a2enmod rewrite \
&& a2dismod mpm_prefork \
&& a2dismod mpm_event \
&& a2enmod mpm_worker \
&& a2enmod proxy_fcgi \
&& a2enmod http2 \
&& a2enmod proxy \
&& a2enmod proxy_http \
&& a2enmod remoteip \
&& a2ensite default-ssl
RUN chown -R www-data:www-data /var/www/
RUN mkdir /var/www/ssl/
RUN chown -R www-data:www-data /var/www/ssl
RUN chown -R www-data:www-data /var/www/html
COPY ./vhostem /etc/apache2/sites-available/httpd.conf
COPY ./content/ /var/www/html/
COPY ./ssl/ /var/www/ssl/
EXPOSE ${APACHE_SSL_PORT}
CMD ["/usr/sbin/apache2ctl", "-DFOREGROUND"]
```
Merci beaucoup pour votre aide
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.