Aucun fichier ou répertoire dans le panneau de construire
Je suis nouveau sur docker et de tenter de port d'une application à l'autre. Essentiellement, au démarrage, l'application doit exécuter de l'environnement de travail dépendant que j'ai encapsulé dans un script.
Mon application ressemble
Dockerfile
scripts/run.sh
build-development/stuff
build-production/stuff
Voici mon Dockerfile:
FROM nginx
RUN chmod +x scripts/run.sh
CMD ["scripts/run.sh", APP_ENV]
EXPOSE 80
et c'est ici scripts/run.sh:
#!/bin/bash
mkdir dist
chmod -R 777 dist
if [ $1 == "development" ]
then
cp -R build-development/. /usr/share/nginx/html
fi
if [ $1 == "stage" ]
then
cp -R build-production/. /usr/share/nginx/html
sed -i 's/production/stage/g' dist/index.html
fi
if [ $1 == "production" ]
then
cp -R build-production/. /usr/share/nginx/html
fi
L'idée est que je vais courir l'image comme:
docker run -e APP_ENV=development app-name
et il sera envoyé dans le script, qui va copier les fichiers corrects.
Malheureusement, je n'arrive jamais à exécuter l'image, parce que lors de l'étape de génération:
docker build -t app-name .
J'ai des erreurs sur
scripts/run.sh n'étant pas un fichier ou d'un répertoire
Je ne comprends pas pourquoi j'obtiens cette erreur, je suppose que c'est à partir de naïf, de l'incompréhension de ma part. Ce que je fais mal et comment puis-je faire mon projet de travail?
Merci d'avance.
Vous devez vous connecter pour publier un commentaire.
Il semble que vous voulez
scripts/run.sh
d'être une partie du récipient. Dans ce cas, avant de vous essayez d'exécuter la commande chmod vous devez le copier dans l'image.Cette copie
./scripts/run.sh
(par rapport à votre répertoire de construction) dans l'image à/scripts/run.sh
, de sorte que votre plus tardRUN
etCMD
ont que le chemin d'accès disponibles.Le problème que j'ai rencontré avec cela, c'est que j'étais dans l'édition de windows, qui ajoute le caractère '/r' pour les nouvelles lignes. Cela a été à l'origine des erreurs avec les POISSONS, mais pas de bash. Il m'a pris la meilleure partie de plusieurs heures pour comprendre cela. L'autre question était onglets versus espaces, c'était aussi de lancer le shell quand il a exécuté la commande.
Juste pensé que je voudrais ajouter que, puisque c'était le problème avec l'erreur que je recevais.
Si vous utilisez notepad++, vous pouvez réellement changer les fins de ligne et l'encodage du texte. J'ai l'habitude de passer à la norme ANSI et les fins de lignes unix pour assurer la coque n'est pas de générer des erreurs.
Sinon, tout a bien fonctionné, seulement lors de l'édition de windows fins de ligne ajouté. Je ne sais pas pourquoi shell ne peut pas gérer la ligne supplémentaire de fin, mais ce peut-être ce que quelqu'un d'autre connaît, quand ils reçoivent le message d'erreur :aucun fichier. Je devais aussi m'assurer que mon docker fichier a été l'ajout de l' +x pour les scripts, même si elles ont été initialement définie dans linux depuis windows, certaines fois les dégâts de ceux-ci, donc je dois être explicite avec des scripts, juste pour s'assurer que si je ou quelqu'un d'autre est en train de télécharger le dockerfile/fichiers de leur ordinateur qu'ils ne perdent pas le fichier exécutable de l'autorisation.
Dans certains cas, lorsque le répertoire ou le fichier ajouté dans
.dockerignore
, seront la cause de ce problème...Afin d'ouvrir ou de vi votre
.dockerignore
et assurez-vous que le répertoire ou le fichier n'est ajouté il y a...et exécuter
docker build .
nouveau..