L'écriture de données sur fichier Dockerfile
J'ai un script shell, script.sh, qui écrit quelques lignes à un fichier:
#!/usr/bin/env bash
printf "blah
blah
blah
blah\n" | sudo tee file.txt
Maintenant dans mon Dockerfile, j'ajoute ce script et l'exécuter, puis tentez d'ajouter le générés file.txt
:
ADD script.sh .
RUN chmod 755 script.sh && ./script.sh
ADD file.txt .
Quand je le fais ci-dessus, je viens d'obtenir une erreur en se référant à la ADD file.txt .
commande:
lstat file.txt: no such file or directory
Pourquoi ne peut-menu fixe localiser le fichier que mon shell script génère?
Où allais-je être capable de le trouver?
OriginalL'auteur pcsram | 2016-06-22
Vous devez vous connecter pour publier un commentaire.
Lorsque vous
RUN chmod 755 script.sh && ./script.sh
il fait exécuter ce script à l'intérieur de le conteneur docker (ie: dans le panneau calque).Lorsque vous
ADD file.txt .
vous essayez d'ajouter un fichier sur votre local système de fichiers à l'intérieur du conteneur docker (ie: dans un nouveau menu fixe couche).Vous ne pouvez pas le faire parce que la file.txt n'existe pas sur votre ordinateur.
En fait, vous avez déjà ce fichier à l'intérieur de docker, essayez
docker run --rm -ti mydockerimage cat file.txt
et vous devriez voir le contenu affichéOriginalL'auteur michael_bitard
C'est parce que Docker charge de l'ensemble du contexte de l'annuaire (où votre Dockerfile est situé) à Docker démon au début. De Docker docs,
Depuis votre fichier texte n'était pas disponible au début, vous obtenez ce message d'erreur. Si vous voulez toujours que fichier texte souhaitez être ajouté à Docker image, vous pouvez l'appeler "docker construire" commande à partir du même fichier de script. Modifier script.sh,
Et modifier votre Dockerfile juste pour ajouter le fichier texte généré.
ADD file.txt
ligne et l'a remplacé parCMD ["cat", "file.txt"]
. J'ai été en mesure de construire l'image et exécuter le récipient correctement, avec l'affichage de "bla bla bla.."OriginalL'auteur techtabu