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
dans le menu fixe /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 répertoire local go
contient make.bash
.
ADD go /usr/local/
copie le conten de votre répertoire local go
dans le répertoire /usr/local/
de votre image de menu fixe.
Pour copier le répertoire go
lui-même dans /usr/local/
, utilisez:
ADD go /usr/local/go
ou
COPY go /usr/local/go
En effet, ADD go /usr/local/
ajoutera conten du dossier go
et non le dossier lui-même, vous pouvez utiliser la solution Thomasleveil ou, si cela ne fonctionne pas pour une raison quelconque, vous pouvez modifier WORKDIR
en /usr/local/
alors ajoutez-y votre répertoire comme ceci:
WORKDIR /usr/local/
COPY go go/
ou
WORKDIR /usr/local/go
COPY go ./
Mais si vous voulez ajouter plusieurs dossiers, il sera ennuyeux de les ajouter comme ça, la seule solution pour le moment, comme je le vois de mon numéro actuel, consiste à utiliser COPY . .
et à exclure tous les éléments indésirables. répertoires et fichiers dans .dockerignore
, supposons que j'ai des dossiers et des fichiers:
src
tmp
dist
assets
go
justforfun
node_modules
scripts
.dockerignore
Dockerfile
headache.lock
package.json
et je veux ajouter src assets package.json justforfun go
donc:
dans Dockerfile:
FROM galaxy:latest
WORKDIR /usr/local/
COPY . .
dans le fichier .dockerignore:
node_modules
headache.lock
tmp
dist
Ou pour plus de plaisir (ou si vous aimez troubler plus de gens les font aussi souffrir: P) peut être:
*
!src
!assets
!go
!justforfun
!scripts
!package.json
De cette façon, vous ignorez tout, mais excluez ce que vous voulez copier ou ajouter uniquement à partir de "ignorer la liste".
C'est une réponse tardive, mais en ajoutant plus de façons de faire la même chose couvrant encore plus de cas.
Vous pouvez utiliser COPY. Vous devez spécifier explicitement le répertoire. Il ne sera pas créé par lui-même
COPY go /usr/local/go
Référence: référence du Docker CP