J'essaie de configurer un environnement de développement via un conteneur Docker sur mon ordinateur Windows 7.
J'ai installé la boîte à outils Docker pour Windows.
J'ai une image avec Apache et PHP 5.6 à l'intérieur, et la voici:
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 \
wget
RUN apt-get install libapache2-mod-php5 -y -o Dpkg::Options::="--force-confdef"
RUN docker-php-ext-install mbstring
RUN docker-php-ext-install pdo pdo_mysql
RUN apt-get install libcurl4-gnutls-dev -y
RUN docker-php-ext-install curl
RUN a2enmod rewrite
ENV Apache_RUN_USER myname
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
RUN echo "ServerName 127.0.1.1" >> /etc/Apache2/Apache2.conf
Cette image est créée et je peux la voir lorsque je lance des "images de menu fixe" dans le terminal de démarrage rapide de Docker.
Dans mon Apache-config.conf, je viens d'avoir un petit hôte virtuel pour accéder à un site Web de test avec juste un fichier index.php.
Ensuite, j'essaie de créer le conteneur dans le terminal Docker quickstart:
docker run --name=php5.6_container --rm -v "//c/sites:/var/www/html" -p 80:80 -p 8080:8080 php5.6
Je reçois l'erreur suivante:
AH00112: Warning: DocumentRoot [/var/www/html/test] does not exist
AH00112: Warning: DocumentRoot [/var/www/html/test] does not exist
[Tue Dec 08 16:36:37.703143 2015] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) configured -- resuming normal operations
[Tue Dec 08 16:36:37.703733 2015] [core:notice] [pid 1] AH00094: Command line: '
Apache2 -D FOREGROUND'
Il semble que mon option de volume n’est pas prise en compte. Et le conteneur n'est pas créé.
Que pourrais-je faire de mal?
Voir la note pour Windows et Mac à l’adresse https://docs.docker.com/engine/userguide/dockervolumes/#mount-a-Host-directory-as-a-data-volume . Particulièrement:
Si vous utilisez Docker Machine sur Mac ou Windows, votre démon Docker n'a qu'un accès limité à votre système de fichiers OS X ou Windows. Docker Machine essaie de partager automatiquement votre répertoire/Users (OS X) ou C:\Users (Windows).
Fondamentalement, vous devrez déplacer les fichiers de votre site vers un emplacement tel que c:\Users\sites
, puis monter en utilisant quelque chose du type suggéré dans la documentation:
docker run --name=php5.6_container --rm -v "/c/Users/sites:/var/www/html" -p 80:80 -p 8080:8080 php5.6
Étape 1: C:/Program Files/Oracle/VirtualBox/VBoxManage sharedfolder add default -name $shared_folder -hostpath d:/data
Pour afficher les dossiers partagés:
VBoxManage showvminfo default | less
Étape 2 (a): mount -t vboxsf -o uid=1000,gid=50 $shared_folder /data
Étape 2 (b): Ajouter un montage automatique à boot2docker
Lorsque vous êtes connecté à la machine, éditez/créez (en tant que root) /mnt/sda1/var/lib/boot2docker/bootlocal.sh
en ajoutant un bloc au fichier, sda1 peut être différent pour vous ...
mkdir -p /data
mount -t vboxsf -o uid=1000,gid=50 $shared_folder /data
Alors, docker-machine restart default
Étape 3: Ajout d’un volume lors de l’exécution du conteneur (exemple de gogs) docker run --name=gogs -rm --net=Host -d -v /fuple:/data gogs/gogs
Puis redémarrez default en tapant dans votre console
redémarrage docker-machine par défaut
Le message est un "AVERTISSEMENT" et non un message d'erreur. Êtes-vous sûr que votre conteneur n'est pas créé? Avez-vous vérifié avec la commande "docker ps -a"?
Si le message est la cause première de votre problème, vous devez corriger la non-existence de/var/www/html/test dans votre conteneur. S'il n'est pas nécessaire, vous devez le supprimer de la configuration Apache (probablement dans le fichier /etc/Apache2/sites-enabled/000-default.conf ou /etc/Apache2/Apache2.conf).
Si/var/www/html/test est nécessaire, vous pouvez essayer d’ajouter
RUN mkdir /var/www/html/test
dans votre fichier Docker afin de vous assurer que le répertoire existe.
En outre, pour essayer de résoudre le problème, vous pouvez essayer d'exécuter le conteneur sans utiliser le volume. S'il n'y a pas d'erreur, vous devez alors entrer dans le conteneur ("docker exec -it php5.6_container bash") afin de résoudre le problème potentiel dans votre conteneur et de vérifier la structure de votre conteneur.
Je pense que pour les options de volume Docker, les guillemets doubles ne sont pas obligatoires:
docker run --name=php5.6_container --rm -v //c/sites:/var/www/html -p 80:80 -p 8080:8080 php5.6
Vérifiez si cela fonctionne. Je ne suis pas sûr.
Voir l'exemple de mappage de volume sur Gestion des données dans des conteneurs.