Моя структура каталогов:
├── 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
.