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:
-
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
-
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 vezvolumes: - 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