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