Impossible d’accéder à un site Web local via apache dans un conteneur de docker (boîte à outils Windows & Docker)

J’ai construit une image Docker avec apache2 et une petite configuration pour pouvoir exécuter un serveur Web local sous Windows.

Voici le fichier Docker:

FROM php:5.6.15-apache RUN apt-get update && apt-get install -y \ apt-utils vim git php5-mysql php5-memcache php5-memcached php5-intl \ sendmail aptitude wget RUN apt-get install libapache2-mod-php5 -y -o Dpkg::Options::="--force-confdef" RUN docker-php-ext-install mbssortingng RUN docker-php-ext-install pdo pdo_mysql RUN apt-get install libcurl4-gnutls-dev -y RUN docker-php-ext-install curl RUN apt-get update && apt-get install -y zlib1g-dev libicu-dev g++ RUN docker-php-ext-configure intl RUN docker-php-ext-install intl RUN a2enmod rewrite ENV APACHE_RUN_USER test ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 ENV APACHE_LOCK_DIR /var/lock/apache2 ENV APACHE_PID_FILE /var/run/apache2.pid EXPOSE 80 COPY php.ini /usr/local/etc/php/php.ini COPY apache-config.conf /etc/apache2/sites-enabled/000-default.conf 

Dans apache-config.conf, j’ai juste un petit hôte virtuel:

  ServerName test.loc DocumentRoot /var/www/html/test  Allow from all  ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined  

Dans mon dossier / c / Users / public / sites / test, j’ai juste un fichier index.php contenant le code suivant:

 <?php phpinfo(); 

J’ai construit mon image avec cette commande dans Docker Quickstart Terminal

 docker build -t php56 . 

Puis j’ai construit mon conteneur:

 docker run --name=php56_container -t --rm -v "//c/Users/Public/sites:/var/www/html" -p 80:80 -p 8080:8080 php56 

Le conteneur est bien créé mais le message suivant apparaît:

 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message [Mon Dec 21 14:18:24.968215 2015] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) configured -- resuming normal operations [Mon Dec 21 14:18:24.968982 2015] [core:notice] [pid 1] AH00094: Command line: ' 

Mon problème est que je ne peux pas accéder à mon site de test et je ne sais pas pourquoi.

J’ai essayé d’append la directive “ServerName 172.17.0.2” dans /etc/apache2/apache2.conf, mais lorsque je redémarre le service apache2, cela empêche mon conteneur de s’exécuter.

J’ai essayé d’inspecter mon conteneur pour voir son adresse IP, mais parfois il n’y en a pas parfois il y a 172.17.0.2

J’ai essayé les adresses suivantes dans mon navigateur mais je ne peux rien atteindre:

http: //test.loc

172.17.0.2:80

0.0.0.0:80

Est-ce que quelqu’un sait comment exécuter un serveur Web avec Docker sur Windows et atteindre un site avec son nom de serveur? (test.loc)

Quelque chose que vous devez savoir, c’est que lorsque vous exécutez docker sur Windows, il n’est pas réellement exécuté sur votre machine Windows, mais la boîte à outils du menu fixe crée une boîte virtuelle dans laquelle s’exécute docker. Vous pouvez en savoir plus à ce sujet ici https://docs.docker.com/engine/installation/windows/ afin que vous puissiez vérifier votre site Web sur l’IP de la VM. Pour connaître l’adresse IP de la vm, vous pouvez utiliser la commande suivante

 docker-machine ip