Сборка Docker с пользовательским путем и пользовательским именем файла не работает - PullRequest
1 голос
/ 18 октября 2019

Я использую Docker версии 19.03.2 в Windows 10.

У меня есть каталог C:\docker_test с файлами Dockerfile и Dockerfile_test. Когда я выполняю

PS C:\> docker build 'C:\docker_test'

в PowerShell, образ создается из Dockerfile, как и ожидалось. Тем не менее, когда я хочу построить изображение из Dockerfile_test, как это

PS C:\> docker build -f Dockerfile_test 'C:\docker_test'

, я получаю

unable to prepare context: unable to evaluate symlinks in Dockerfile path:
CreateFile C:\Dockerfile_test: The system cannot find the file specified.

Я не понимаю, почему Docker ищет C:\Dockerfile_test, хотя яуказан путь сборки.

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Ответ на этот вопрос уже есть, но об этом подробнее

Из документов

Команда сборки docker создает образ изDockerfile и контекст. Контекстом сборки является набор файлов в указанном месте PATH или URL

С C:\docker_test вы указали контекст.

Из тех же документов

Традиционно Dockerfile называется Dockerfile и находится в корне контекста. Вы используете флаг -f в сборке Docker, чтобы указать на Dockerfile в любой точке вашей файловой системы.

Поэтому, если вы укажете флаг -f, Docker будет искать данный файл. В вашем случае у вас есть файл без пути, поэтому docker будет искать в текущем каталоге.

Чтобы он работал, используйте команду, предложенную @ Arik

0 голосов
/ 18 октября 2019

Вы должны указать путь (контекст) вашего Dockerfile, например:

PS C:\> docker build -f 'C:\docker_test\Dockerfile_test' 'C:\docker_test'
...