Domanda Copia di file in un contenitore con Docker Compose


Ho un Dockerfile dove copio una directory esistente (con contenuto) nel contenitore che funziona bene:

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

Ma quando uso a docker-compose.yml file c'è solo la directory aw3somevideo e dentro aw3somevideo non c'è niente.

finestra mobile-compose.yml:

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

Screenshot of empty directory listing

Forse non capisco la funzione di volumes e se questo è il caso per favore dimmi come copiare i miei file esistenti nel contenitore tramite a docker-compose.yml file.


30
2017-08-27 01:13


origine


risposte:


Aggiornato ad aprile 2017

Il comportamento è cambiato da quando ho scritto la risposta originale. Ora è coerente se il lato destro specifica un volume denominato come myvolume o un percorso sull'host come /var/lib/myapp. Per esempio

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

Se /dir/on/host non esiste, viene creato sull'host e il contenuto vuoto viene montato nel contenitore in /var/www/html. Qualunque cosa fosse dentro /var/www/html prima è inaccessibile.

---- vecchia risposta -----------

Il volumes: sezione nella finestra mobile - compose sovrascrive ciò che è nel /var/www/html directory.

Ci sono due situazioni principali:

  1. Il volume esiste

    In tal caso, il contenuto del volume oscura quello che si trova nella directory dst.

    Per esempio:

    volumes:
      - /dir/on/host:/var/www/html
    
  2. Il volume non esiste

    Se myvolume non esiste (un volume chiamato per esempio), il contenuto di / var / www / html verrà copiato nel volume la prima volta

    volumes:
      - myvolume:/var/www/html
    

Nel caso 2, se si tenta di montare nuovamente lo stesso volume su un contenitore, verrà seguito il caso 1.

    volumes:
      - myvolume:/var/www/html

In tal caso (supponendo che myvolume fosse già stato creato), il contenuto di / var / ww / html verrà sovrascritto (ombreggiato) da qualunque cosa si trovi in myvolume.

Il documento ufficiale va in maggiori dettagli https://docs.docker.com/compose/compose-file/#/volumes-volume-driver


24
2017-08-27 13:07