Docker-composition de montage de volume avant de l'exécuter
J'ai un Dockerfile je suis pointant à partir d'un menu fixe-composer.yml.
J'aimerais le montage de volume dans le menu fixe-composer.yml se faire avant la RUN
dans le Dockerfile.
Dockerfile:
FROM node
WORKDIR /usr/src/app
RUN npm install --global gulp-cli \
&& npm install
ENTRYPOINT gulp watch
docker-composer.yml
version: '2'
services:
build_tools:
build: docker/gulp
volumes_from:
- build_data:rw
build_data:
image: debian:jessie
volumes:
- .:/usr/src/app
Il prend tout son sens pour qu'il ne le Dockerfile d'abord, puis montez à partir de docker-composer, cependant est-il un moyen de la contourner.
Je veux garder le Dockerfile générique, tout en passant plus de bits spécifiques de composer. C'est peut-être pas la meilleure pratique?
OriginalL'auteur DanielM | 2016-05-07
Vous devez vous connecter pour publier un commentaire.
Erik de Dannenberg est correct, le volume de superposition signifie que ce que j'essayais de faire n'a aucun sens. (Il y a une très bonne explication sur le Docker site web si vous voulez en savoir plus). Si je veux avoir Docker ne le
npm install
alors je pourrais faire comme ceci:Cependant, ce n'est pas approprié comme une solution pour ma situation. L'objectif est d'utiliser NPM pour installer les dépendances d'un projet, puis exécutez gorgée de construire mon projet. Cela signifie que j'ai besoin d'accès en lecture et écriture pour le dossier du projet et il doit persister après le container est parti.
J'ai besoin de faire deux choses après que le volume est monté, donc je suis venu avec la solution suivante...
menu fixe/gulp/Dockerfile:
docker/gulp/start-gulp.sh:
docker-composer.yml:
Alors maintenant, le conteneur commence un script bash qui va continuellement en boucle jusqu'à ce qu'il peut obtenir dans le répertoire et exécuter
npm install
. C'est encore assez fragile, mais il fonctionne. 🙂vous rock holmes! douce réponse
OriginalL'auteur DanielM
Vous ne pouvez pas monter d'accueil des dossiers ou des volumes au cours d'un Docker construire. Permettant à compromettre construire la répétabilité. La seule façon d'accéder aux données locales au cours d'un Docker de construire est l'accumulation de contexte, qui est tout dans la
PATH
ouURL
vous passé à labuild
de commande. Notez que leDockerfile
doit exister quelque part dans le contexte. Voir https://docs.docker.com/engine/reference/commandline/build/ pour plus de détails.OriginalL'auteur Erik Dannenberg