156 votes

Copie de fichiers vers un récipient avec le Panneau de Composer

J'ai un Dockerfile où je copie un répertoire existant (avec contenu) pour le conteneur qui fonctionne très 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 

Screenshot of directory listing with docker exec

Mais lorsque j'utilise un docker-compose.yml le fichier, il est seulement le répertoire aw3somevideo et à l'intérieur, aw3somevideo il n'y a rien.

docker-composer.yml:

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

Screenshot of empty directory listing

Peut-être que je ne comprends pas la fonction d' volumes et si c'est le cas, merci de me dire comment faire pour copier mes fichiers existants vers le récipient au moyen d'un docker-compose.yml le fichier.

144voto

Alkaline Points 1625

Mise À Jour En Avril 2017

Le comportement a changé depuis que j'ai écrit la réponse originale à cette question. Il est maintenant compatible si le côté droit indique un volume nommé comme myvolume ou un chemin d'accès sur l'ordinateur hôte comme /var/lib/myapp. Par exemple

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

si /dir/on/host n'existe pas, il est créé sur l'ordinateur hôte et le contenu est vide est monté dans le conteneur /var/www/html. Tout ce qui était en /var/www/html avant est inaccessible.

---- vieille réponse -----------

L' volumes: section dans votre menu fixe-composer écrase tout ce qui est dans l' /var/www/html répertoire.

Il ya deux réseau d'situations:

  1. Le volume n'existe

    Dans ce cas, le contenu du volume éclipse tout ce qui est dans le répertoire de l'heure d'été.

    Par exemple:

    volumes:
      - /dir/on/host:/var/www/html
    
  2. Le volume n'existe pas

    Si myvolume n'existe pas (un nom de volume, par exemple), le contenu de /var/www/html sera copié dans le volume la première fois autour de

    volumes:
      - myvolume:/var/www/html
    

Dans le cas 2, si vous essayez de monter le même volume de nouveau sur certains conteneur, il suivra le cas 1.

    volumes:
      - myvolume:/var/www/html

Dans ce cas (en supposant que monvolume a déjà été créé), le contenu de /var/ww/html sera écrasé (l'ombre) par ce qui se trouve dans myvolume.

L'officiel doc va plus dans les détails https://docs.docker.com/compose/compose-file/#/volumes-volume-driver

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X