Apache dans Docker ne livrera pas les sites

Après avoir installé un serveur Web Apache dans un conteneur Docker, je voulais afficher un exemple de page pour vérifier qu’il fonctionne. Cependant, je reçois toujours 404 Pas trouvé.

Voici le dockerfile

FROM ubuntu:14.04 MAINTAINER  RUN DEBIAN_FRONTEND=noninteractive # Install required packages RUN apt-get -y update RUN apt-get install -y apache2 libapache2-mod-php5 php5-gd php5-json php5-mysql php5-curl php5-intl php5-imagick bzip2 wget # Enable the php mod RUN a2enmod php5 # Configuration for Apache ADD ./apache.conf /etc/apache2/sites-available/ RUN ln -s /etc/apache2/sites-available/apache.conf /etc/apache2/sites-enabled/ RUN a2enmod rewrite RUN mkdir /var/www/test && echo "

Yo

" >> /var/www/test/index.html EXPOSE :80 CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

apache.conf

  ServerAdmin webmaster@localhost DocumentRoot /var/www  Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all   

Le conteneur est opérationnel. Le port 80 est transmis au 8080 sur la machine hôte.

Lorsque je navigue sur localhost: 8080, je peux voir la page par défaut apache2. Cependant, quand je vais à localhost: 8080 / test / index.html, je ne reçois que 404 Not found.

C’est parce que vous avez toujours la configuration par défaut pour les sites-enabled .

Pour supprimer ce fichier, vous devez append une ligne pour supprimer ceci (probablement autour du même endroit que celui où vous avez ajouté la nouvelle configuration vhost) avec:

 RUN rm -rf /etc/apache2/sites-enabled/000-default.conf 

Je pense que c’est un problème de permissions. Rappelez-vous que lors de la création du conteneur Docker à partir du fichier docker, tout est exécuté en tant que root. Votre fichier /var/www/test/index.html appartient donc à root. Je pense que cela a des permissions restreintes.

Essaye ça:

Après

 RUN mkdir /var/www/test && echo "

Yo

" >> /var/www/test/index.html

append

 RUN chmod 0755 /var/www/test/index.html 

Cela réinitialisera les permissions sur ce fichier afin que tout le monde puisse le lire. Si j’ai raison, cela résoudra votre problème.

Je ne vois pas: ServerName “votre.domaine” ou localhost dans votre fichier .conf