Я прочитал http://docs.docker.com/engine/reference/builder/#add, однако столкнулся с проблемой. Я хочу скопировать локальный каталог go
в докер/user/local/
Я старался:
ADD go /usr/local/
а также:
ADD /go/ /usr/local/
также:
RUN chmod 0755 /usr/local/go/src/make.bash
Тем не менее, я вижу следующее сообщение об ошибке, /usr/local/go/src/make.bash: No such file or directory
но локальный go
каталог содержит make.bash
.
ADD
слоя для каждого исходного каталога)?$HOME
или~
или любой другой переменной оболочки не будет работать. Я говорю это потому, что потратил много сил, пытаясь понять это, чем я хотел бы признаться, хотя это очевидно для большинства.COPY
просто не может вести себя какcp
? Вместо этого должна быть дополнительная полиция, как это работает.Действительно
ADD go /usr/local/
добавит содержимое вgo
папку , а не саму папку, вы можете использовать Thomasleveil решение или если это не сработало по какой - то причине вы можете изменить ,WORKDIR
чтобы/usr/local/
затем добавить каталог к ней , как:или
Но если вы хотите добавить несколько папок, это будет раздражать, добавляя их таким образом, пока единственное решение, которое я вижу из моей текущей проблемы, заключается в использовании
COPY . .
и исключении всех нежелательных каталогов и файлов.dockerignore
, скажем, у меня есть папки и файлы. :и я хочу добавить
src assets package.json justforfun go
так:в Dockerfile:
в файле .dockerignore:
Или для большего удовольствия (или вам нравится путать больше людей, заставляющих их страдать: P) может быть:
Таким образом, вы игнорируете все, но исключаете то, что хотите скопировать или добавить только из «списка игнорирования».
Это поздний ответ, но он добавляет больше способов сделать то же самое, покрывая еще больше случаев.
источник
Вы можете использовать COPY. Вам необходимо указать каталог явно. Он не будет создан сам по себе
Ссылка: ссылка Docker CP
источник