tag hub ejemplo compose commands docker copy docker-compose volumes

hub - Copiar archivos a un contenedor con Docker Compose



docker registry (1)

Tengo un Dockerfile donde copio un directorio existente (con contenido) al contenedor que funciona bien:

Dockerfile

FROM php:7.0-apache COPY Frontend/ /var/www/html/aw3somevideo/ COPY Frontend/ /var/www/html/ RUN ls -al /var/www/html RUN chown -R www-data:www-data /var/www/html RUN chmod -R 755 /var/www/html

Pero cuando uso un archivo docker-compose.yml solo hay el directorio aw3somevideo y dentro de aw3somevideo no hay nada.

docker-compose.yml :

php: build: php/ volumes: - ./Frontend/ :/var/www/html/ - ./Frontend/index.php :/var/www/html/ ports: - 8100:80

Tal vez no entiendo la función de los volumes y, si ese es el caso, dígame cómo copiar mis archivos existentes al contenedor a través de un archivo docker-compose.yml .


Actualizado en abril de 2017

El comportamiento ha cambiado desde que escribí la respuesta original. Ahora es coherente si el lado derecho especifica un volumen con nombre como myvolume o una ruta en el host como /var/lib/myapp . Por ejemplo

volumes: - /dir/on/host:/var/www/html

si /dir/on/host no existe, se crea en el host y el contenido vacío se monta en el contenedor en /var/www/html . Lo que antes estaba en /var/www/html es inaccesible.

---- respuesta anterior -----------

La sección volumes: en su docker-compose sobrescribe lo que esté en el directorio /var/www/html .

Hay dos situaciones principales:

  1. El volumen existe

    En ese caso, el contenido del volumen eclipsa lo que esté en el directorio dst.

    P.ej:

    volumes: - /dir/on/host:/var/www/html

  2. El volumen no existe

    Si myvolume no existe (un volumen con nombre, por ejemplo), el contenido de / var / www / html se copiará al volumen la primera vez

    volumes: - myvolume:/var/www/html

En el caso 2, si intenta montar el mismo volumen nuevamente en algún contenedor, seguirá el caso 1.

volumes: - myvolume:/var/www/html

En ese caso (suponiendo que myvolume ya se haya creado), el contenido de / var / ww / html se sobrescribirá (sombreará) por lo que esté en myvolume .

El documento oficial entra en más detalles https://docs.docker.com/compose/compose-file/#/volumes-volume-driver