Dockerfile: COPY / ADD с пробелом в пути (Windows) - PullRequest
1 голос
/ 03 июня 2019

В Windows 10 (cmd) я пытаюсь скопировать файл из подпапки, содержащей в имени символ пробела.

  1. Сначала я попытался использовать кавычки:

    FROM jfloff/alpine-python:2.7
    COPY "Folder 1/File.txt" "Dir 1"
    

    Сообщение об ошибке:

    не удалось обработать "\" Папка ": неожиданный конец оператора при поиске совпадающей двойной кавычки

  2. Формат "JSON" (пропущен в первой строке):

    COPY ["Folder 1/File.txt" "Dir 1"]
    

    Сообщение об ошибке:

    не удалось обработать "[\ "Папка" : неожиданный конец оператора при поиске совпадающей двойной кавычки

  3. Попытка выхода с одной обратной косой чертой:

    COPY "Folder\ 1/File.txt" "Dir\ 1"
    

    Сообщение об ошибке:

    не удалось обработать "\" Папка \\ ": неожиданный конец оператора при поиске совпадающей двойной кавычки

  4. Попытка сбежать с двойной обратной косой чертой:

    COPY "Folder\\ 1/File.txt" "Dir\\ 1"
    

    Сообщение об ошибке:

    Не удалось обработать "\" Папка \\\\ ": неожиданный конецоператор при поиске совпадающей двойной кавычки

  5. Также попытался предложить использовать % 20 вместо пробела:

    COPY ["Folder%201/File.txt" "Dir%201"]
    

    Сообщение об ошибке:

    Ошибка копирования: нет источника Файл

  6. Замена символа Escape:

    # escape=`
    COPY "Folder` 1/File.txt" "Dir 1"
    

    Сообщение об ошибке:

    не удалось обработать "\" Folder` ": неожиданный конец оператора при поиске совпадающей двойной кавычки

  7. То же самое, но без кавычек:

    #escape=`
    COPY Folder` 1/File.txt Dir` 1
    

    Сообщение об ошибке:

    Не удалось скопировать: stat / var / lib / docker / tmp / docker-builder082039614 / Папка : такого файла или каталога нет

  8. Способ упаковки / распаковки с использованием архива tar (меня эта идея не устраивает).

Это должно быть возможно, не так ли?

1 Ответ

1 голос
/ 03 июня 2019

Может быть, вы можете использовать ARG, чтобы помочь вам, например:

Dockerfile:

FROM jfloff/alpine-python:2.7
ARG src="Folder 1/File.txt"
ARG target="Dir 1/"
COPY ${src} ${target}

BTW, / необходимо добавитьв конце Dir 1 если вы обрабатываете действительно хотите рассматривать его как папку.

И, формат JSON тоже в порядке, просто вы пропустите ,, это должно быть:

FROM jfloff/alpine-python:2.7
COPY ["Folder 1/File.txt", "Dir 1/"]

Обновление для ваших комментариев:

В официальном руководстве сказано:

При копировании файлов или каталогов, содержащих специальныесимволы (такие как [и]), вам нужно экранировать эти пути, следуя правилам Голанга, чтобы они не рассматривались как соответствующий шаблон.

Итак, для вашего случая это должно быть:

FROM jfloff/alpine-python:2.7
ARG src="[[]Folder 1]/__SLIM_TEMPLATE.mm"
ARG target="[Folder 1]/"
COPY ${src} ${target}

Или:

FROM jfloff/alpine-python:2.7
COPY ["[[]Folder 1]/__SLIM_TEMPLATE.mm", "[Folder 1]/"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...