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
Mais lorsque j'utilise un docker-compose.yml
fichier, il est seulement le répertoire aw3somevideo
et à l'intérieur de 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
Peut-être que je ne comprends pas la fonction de 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
fichier.
- Retirez votre
volumes:
section de votre menu fixe-composition de fichier. Votre image a déjà données. Les volumes: la section juste écrase les données. Aussi se déplacer à l'actuel docker-composer format (version 2). - thx c'était vraiment le problème. Mais pourquoi ne pas les volumes de copier l'intégralité d'un répertoire?
- Je vais répondre comme une réponse si vous fermez cette question.
Vous devez vous connecter pour publier un commentaire.
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
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 -----------
La
volumes:
de section dans le menu fixe-composer écrase tout ce qui est dans le/var/www/html
répertoire.Il ya deux réseau d'situations:
Le volume existe
Dans ce cas, le contenu du volume éclipse tout ce qui est dans le répertoire de l'heure d'été.
Par exemple:
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 deDans le cas 2, si vous essayez de monter le même volume de nouveau sur certains conteneur, il suivra le cas 1.
Dans ce cas (en supposant que monvolume a déjà été créé), le contenu de /var/ww/html sera écrasé (l'ombre) par tout ce qui est en
myvolume
.Officiel doc va plus dans les détails, https://docs.docker.com/compose/compose-file/#/volumes-volume-driver
var/www/html/
n'est pas copié plus de/dir/on/host
même lorsqu'il n'existe pas? Est-il possible à force de copier les données dans le menu fixe-conteneur à l'hôte lorsque atarting un conteneur pour la première fois?docker run -v /dir/on/host:/hostdir php sh -c "cp -rp /var/www/html/* /hostdir && exec myapp"
. N'oubliez pas d'utiliserexec
d'invoquer la commande finale, de sorte qu'il est attribué à PID1. Qui sera assurez-vous que myapp reçoit des signaux de terminaison (Ctrl-C par exemple).