from example php windows apache docker dockerfile

php - from - dockerfile volume example



Docker: compartir un volumen en Windows con Docker Toolbox (5)

Consulte la nota para Windows y Mac en https://docs.docker.com/engine/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume . Particularmente:

Si está utilizando Docker Machine en Mac o Windows, su demonio Docker solo tiene acceso limitado a su sistema de archivos OS X o Windows. Docker Machine intenta compartir automáticamente el directorio / Users (OS X) o C: / Users (Windows).

Básicamente, tendrá que mover los archivos de su sitio a algún lugar como c:/Users/sites y luego montarlo como se sugiere en la documentación:

docker run --name=php5.6_container --rm -v "/c/Users/sites:/var/www/html" -p 80:80 -p 8080:8080 php5.6

Estoy tratando de configurar un entorno de desarrollador a través de un contenedor Docker en mi computadora con Windows 7.

He instalado la caja de herramientas Docker para Windows.

Tengo una imagen con Apache y PHP 5.6 dentro, y aquí está:

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

Esta imagen se crea, y puedo verla cuando ejecuto "imágenes de docker" en el terminal de inicio rápido de Docker.

En mi apache-config.conf, solo tengo un pequeño host virtual para acceder a un sitio web de prueba con solo un archivo index.php.

Luego trato de crear el contenedor en el terminal de inicio rápido de Docker:

docker run --name=php5.6_container --rm -v "//c/sites:/var/www/html" -p 80:80 -p 8080:8080 php5.6

Obtuve el siguiente error:

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''

Parece que mi opción de volumen no se tiene en cuenta. Y el contenedor no se crea.

¿Qué podría estar haciendo mal?


Creo que para las opciones de volumen de Docker, no se requieren comillas dobles:

docker run --name=php5.6_container --rm -v //c/sites:/var/www/html -p 80:80 -p 8080:8080 php5.6

Compruebe si está funcionando. No estoy seguro.

Ver ejemplo de mapeo de volúmenes en Administrar datos en contenedores .


El mensaje es una "ADVERTENCIA", no un mensaje de error. ¿Estás seguro de que tu contenedor no está creado? ¿Has comprobado con el comando "docker ps -a"?

Si el mensaje es la causa raíz de su problema, debe resolver la no existencia de / var / www / html / test dentro de su contenedor. Si no es necesario, debería eliminarlo de la configuración de apache (probablemente dentro del archivo /etc/apache2/sites-enabled/000-default.conf o /etc/apache2/apache2.conf).

Si necesita / var / www / html / test, puede intentar agregar

RUN mkdir /var/www/html/test

dentro de su Dockerfile para asegurarse de que existe el directorio.

Además, para intentar depurar el problema, puede intentar ejecutar el contenedor sin utilizar el volumen. Si no hay ningún error, debe ingresar el contenedor ("docker exec -it php5.6_container bash") para depurar el problema potencial dentro de su contenedor y verificar la estructura de su contenedor.


Paso 1: C:/Program Files/Oracle/VirtualBox/VBoxManage sharedfolder add default -name $shared_folder -hostpath d:/data

Para mostrar carpetas compartidas:

VBoxManage showvminfo default | less

Paso 2 (a): mount -t vboxsf -o uid=1000,gid=50 $shared_folder /data

Paso 2 (b): agregar un montaje automático a boot2docker

Mientras /mnt/sda1/var/lib/boot2docker/bootlocal.sh conectado a la máquina, edite / cree (como raíz) /mnt/sda1/var/lib/boot2docker/bootlocal.sh agregando el siguiente bloque al archivo, sda1 puede ser diferente para usted ...

mkdir -p /data mount -t vboxsf -o uid=1000,gid=50 $shared_folder /data

Entonces, el docker-machine restart default

Paso 3: agregar volumen cuando se ejecuta el contenedor (gogs como ejemplo) la ventana docker run --name=gogs -rm --net=host -d -v /fuple:/data gogs/gogs


  • Abra "Oracle VM VirtualBox"
  • Una vez que se seleccione "por defecto", haga clic en "configuración"
  • Vaya a "Carpetas cortadas" Agregar la carpeta deseada
  • Luego reinicie el valor predeterminado escribiendo en su consola

    docker-máquina reinicio por defecto