J'ai lu http://docs.docker.com/engine/reference/builder/#add mais j'ai rencontré un problème. Je veux copier le répertoire local go
sur Docker/user/local/
J'ai essayé:
ADD go /usr/local/
et:
ADD /go/ /usr/local/
aussi:
RUN chmod 0755 /usr/local/go/src/make.bash
Cependant, je vois le message d'erreur suivant /usr/local/go/src/make.bash: No such file or directory
mais le go
répertoire local contient make.bash
.
ADD
couche pour chaque répertoire source)?$HOME
ou~
ou toute autre variable shell ne fonctionnera pas. Je dis cela parce que j'ai passé beaucoup de temps à essayer de comprendre cela que je ne voudrais l'admettre, même si c'est évident pour la plupart.COPY
simplement se comporter commecp
? Au lieu de cela, il doit y avoir une police supplémentaire pour savoir comment cela fonctionne.En effet
ADD go /usr/local/
, ajoutera le contenu dugo
dossier et non le dossier lui-même, vous pouvez utiliser la solution Thomasleveil ou si cela n'a pas fonctionné pour une raison quelconque, vous pouvez changerWORKDIR
pour/usr/local/
ensuite y ajouter votre répertoire comme:ou
Mais si vous voulez ajouter plusieurs dossiers, il sera ennuyeux de les ajouter comme ça, la seule solution pour l'instant, comme je le vois dans mon problème actuel, utilise
COPY . .
et exclut tous les répertoires et fichiers indésirables dans.dockerignore
, disons que j'ai des dossiers et des fichiers :et je veux ajouter
src assets package.json justforfun go
ceci:dans Dockerfile:
dans le fichier .dockerignore:
Ou pour plus de plaisir (ou si vous aimez confondre plus de gens, faites-les souffrir également: P) peut être:
De cette façon, vous ignorez tout, mais en excluant ce que vous souhaitez copier ou ajouter uniquement à partir de "ignorer la liste".
C'est une réponse tardive, mais en ajoutant plus de façons de faire de même en couvrant encore plus de cas.
la source
Vous pouvez utiliser COPY. Vous devez spécifier le répertoire explicitement. Il ne sera pas créé par lui-même
Référence: Docker CP reference
la source