Dockerfile ~ правильный синтаксис для добавления папок Windows - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь создать Dockerfile, который добавляет папку, имеющуюся в моей локальной файловой системе Windows, в контейнер Windows.Однако у меня возникают проблемы с определением правильного синтаксиса.

В частности, я пытаюсь скопировать содержимое каталога [C: \ Foo Source Files \ Zog Foo \ Bar] в [C: \ Bar] нав контейнере Windows Docker.

До сих пор я пробовал следующие варианты:

ADD ["C:\Foo Source Files\Zog Foo\Bar", "C:/Bar"]
ADD ["C:\Foo Source Files\Zog Foo\Bar\", "C:/Bar/"]

Это приводило к следующей ошибке при попытке запустить сборку образа:

failed to process "[\"C:\\Foo": unexpected end of statement while looking for matching double-quote

Напротив, следующие варианты ...

ADD ["C:/Foo Source Files/Zog Foo/Bar", "C:/Bar"] 
ADD ["C:/Foo Source Files/Zog Foo/Bar/", "C:/Bar/"]
ADD ["C:\\Foo Source Files\\Zog Foo\\Bar\\", "C:/Bar/"]
ADD ["C:\\\\Foo Source Files\\\\Zog Foo\\\\Bar\\\\", "C:/Bar/"]
ADD ["C:\\\\Foo Source Files\\\\Zog Foo\\\\Bar", "C:/Bar/"]
ADD C:/Foo Source Files/Zog Foo/Bar/, C:/Bar/
ADD C:\Foo Source Files\Zog Foo\Bar\, C:/Bar/

... вызвали следующую различную ошибку:

ADD failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder997952273\Foo Source Files\Zog Foo\Bar: The system cannot find the path specified.

Этот вариант ...

ADD C:\Foo Source Files\Zog Foo\Bar\, C:/Bar/

... вызвал эту немного другую ошибку:

ADD failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder997952273\Foo: The system cannot find the path specified.

После этого я попытался отбросить переименование моих исходных папок, чтобы они не содержали пробелов, и попытался сделать это с помощью следующего оператора:

ADD C:\FooSourceFiles\ZogFoo\Bar\, C:/Bar/

... но это снова привело к следующей ошибке:

ADD failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder197358441\C:FooSourceFilesZogFooBar,: The system cannot find the file specified.

Я также пробовал использовать дополнительные косые черты в качестве escape-символа ...

ADD C:\\FooSourceFiles\\ZogFoo\\Bar\\, C:/Bar/

... но это также не удалось, так как, очевидно, Docker ищет файл в подкаталоге докерарабочий каталог, хотя я пытался указать ему поиск по абсолютному пути

ADD failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder492157702\FooSourceFiles\ZogFoo\Bar\,: The system cannot find the path specified.

Любая помощь с этим будет принята с благодарностью.

Редактировать: Объяснение, почему это не дубликатОшибка инструкции COPY Dockerfile ?: Этот вопрос касается сбоя инструкции COPY, которая возникла из-за неработающей "~ /", а также о контейнерах Linux.Мой вопрос в первую очередь о правильном синтаксисе для использования команды ADD в контейнерах Windows.Я не понимаю, как эти две проблемы связаны, и утвержденный ответ по этой теме даже не относится к моему делу.

1 Ответ

0 голосов
/ 24 сентября 2018

Очевидно, проблема заключалась в том, что Docker не поддерживает абсолютные пути в качестве входных путей.

Я наконец смог заставить его работать, поместив "Bar" -Folder втот же каталог, что и Dockerfile, а затем с помощью следующей инструкции ADD в Dockerfile:

ADD Bar C:/Bar/

Если я ошибаюсь, и *1009* позволяет использовать абсолютные пути в качестве исходного пути, пожалуйста,поправь меня

...