Docker сборка иногда завершается с ошибкой «файл не найден или исключен .dockerignore» для вложенного игнорируемого файла - PullRequest
2 голосов
/ 30 января 2020

Моя структура каталогов:

├── src/
├───── backend/
├─────── Dockerfile
├─────── ...
├───── frontend/
├─────── Dockerfile
├─────── node_modules/
├─────── ...
├───── commons/
├─────── ...
├── .dockerignore

.dockerignore включает в себя строку **/node_modules, и мой контекст сборки является каталогом root из-за использования commons.

I Я одновременно выполняю обе команды

docker build ... -f src/backend/Dockerfile .

docker build ... -f src/frontend/Dockerfile .

, и иногда сборка backend завершается ошибкой при следующей указанной ошибке c:

контекст проверки ошибок: 'file (' /workspace/src/frontend/node_modules/.staging/wrap-ansi-2a6f888f ') не найден или исключен .dockerignore'.

Насколько я понимаю (см. Почему модули Node go попадают в папку .staging? ) папка .staging является временной, и при ее обходе может возникнуть проблема гонки (см. Docker cli source ).

Однако, почему этот файл идет первым, если node_modules игнорируется? Я неправильно использую функцию игнорирования контекста или это фактическое состояние гонки?

Проблема воспроизводится в среде Google Cloud Build, где я использую docker cli через изображение gcr.io/cloud-builders/docker, которое использует docker версия клиента 19.03.5 и работает с docker версия сервера 18.09.3, версия API 1.39.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...