Ответ 1
ADD go /usr/local/
скопирует содержимое вашего локального каталога go
в каталоге /usr/local/
вашего изображения докеры.
Чтобы скопировать каталог go
в /usr/local/
, используйте:
ADD go /usr/local/go
или
COPY go /usr/local/go
Я прочитал http://docs.docker.com/engine/reference/builder/#add, однако я столкнулся с проблемой. Я хочу скопировать локальный каталог go
в docker /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 go /usr/local/
скопирует содержимое вашего локального каталога go
в каталоге /usr/local/
вашего изображения докеры.
Чтобы скопировать каталог go
в /usr/local/
, используйте:
ADD go /usr/local/go
или
COPY go /usr/local/go
Действительно, ADD go/usr/local/
будет добавлять содержимое папки go
а не саму папку, вы можете использовать решение Thomasleveil или, если по какой-то причине это не сработало, вы можете изменить WORKDIR
на /usr/local/
затем добавить в него свой каталог. лайк:
WORKDIR /usr/local/
COPY go go/
или же
WORKDIR /usr/local/go
COPY go ./
Но если вы хотите добавить несколько папок, это будет раздражать, добавляя их таким образом, пока единственное решение, как я вижу из моей текущей проблемы, это использование COPY..
COPY..
и исключить все нежелательные каталоги и файлы в .dockerignore
, скажем, я получил папки и файлы:
src
tmp
dist
assets
go
justforfun
node_modules
scripts
.dockerignore
Dockerfile
headache.lock
package.json
и я хочу добавить src assets package.json justforfun go
так:
в Dockerfile:
FROM galaxy:latest
WORKDIR /usr/local/
COPY . .
в файле .dockerignore:
node_modules
headache.lock
tmp
dist
Или для большего удовольствия (или вам нравится путать больше людей, заставляющих их страдать: P) может быть:
*
!src
!assets
!go
!justforfun
!scripts
!package.json
Таким образом, вы игнорируете все, но исключаете то, что хотите скопировать или добавить только из "списка игнорирования".
Это поздний ответ, но он добавляет больше способов сделать то же самое, покрывая еще больше случаев.
Вы можете использовать COPY. Вам нужно указать каталог явно. Он не будет создан сам по себе
COPY go /usr/local/go
Ссылка: ссылка Docker CP