Docker suivre lien symbolique à l'extérieur du contexte
Encore un autre Docker lien symbolique question. J'ai un tas de fichiers que je veux copier sur tous mes Docker construit. Mon dir structure est:
parent_dir
- common_files
- file.txt
- dir1
- Dockerfile
- symlink -> ../common_files
Dans l'exemple ci-dessus, je veux file.txt pour être copié sur le moment où je docker construire à l'intérieur de dir1. Mais je ne veux pas conserver des copies multiples de file.txt.
Par ce lien, que de docker version 0.10, le panneau de construction
Suivre les liens symboliques à l'intérieur du conteneur racine pour AJOUTER des instructions de compilation.
Mais je reçois aucun fichier ou répertoire quand je construire avec l'une de ces lignes dans mon Dockerfile:
ADD symlink /path/dirname
ou
ADD symlink/file.txt /path/file.txt
de l'option de montage ne résoudra PAS pour moi (de la croix-plate-forme...).
J'ai essayé tar -czh . | docker build -t
sans succès.
Est-il un moyen de faire de Docker suivez le lien et copier le common_files/file.txt dans le construit conteneur?
Vous devez vous connecter pour publier un commentaire.
Qui n'est pas possible et ne sera pas mis en œuvre. Jetez un oeil à la discussion sur github question n ° 1676:
Follow symlinks inside container's root for ADD build instructions.
signifie que à l'intérieur du conteneur liens symboliques sont suivies. Pas dans la construction de répertoire de contexte. DansADD file.txt /dir/file.txt
le répertoiredir
pourrait être un lien symbolique. Les arguments que j'ai cité dans ma réponse est toujours d'actualité et liens symboliques sont toujours pas suivies dans la dernière version. Vous pourriez avoir des problèmes (concernant la répétabilité) lorsque vous stockez des liens symboliques dans les systèmes de contrôle de révision comme git. Donc s'il vous plaît reportez-vous à cette question.Pour quelqu'un d'autre à ce problème, veuillez voir ce lien.
Personnellement j'ai opté pour le "construire une base commune image" de la solution et il fonctionne à merveille.
Une possibilité consiste à exécuter le construire dans le répertoire parent, avec:
(Ou de manière équivalente, dans le répertoire enfant)
Le Dockerfile devra être configuré pour faire des copier/ajouter avec les voies appropriées. Selon votre configuration, vous voudrez peut-être un
.dockerignore
dans le parent de laisserdes choses que vous ne voulez pas être mis dans le contexte.
au lieu d'utiliser simlinks il est possible de résoudre le problème de manière administrative par le simple fait de déplacer des fichiers à partir de sites_available à sites_enabled au lieu de les copier ou de faire simlinks
si votre site config sera en un seul exemplaire dans site_available dossier si il a cessé ou quelque chose dans sites_enabled si elle devrait être utilisée