Рабочие пространства пряжи и докер
Я пытаюсь использовать рабочие области пряжи, а затем помещаю свое приложение в образ Docker.
Структура папок выглядит следующим образом:
- корень
- Dockerfile
- node_modules /
- libA -> ../libA
- Либ /
- ...
- приложение/
- ...
К сожалению, Docker не поддерживает символические ссылки - поэтому невозможно скопировать папку node_modules в корневом каталоге в образ Docker, даже если файл Docker находится в корневом каталоге, как в моем случае.
Единственное, что я мог бы сделать, это исключить символические ссылки с помощью.dockerignore, а затем скопировать настоящий каталог в образ.
Другой идеей, которую я бы предпочел, было бы иметь инструмент, который заменяет символические ссылки фактическим содержимым символической ссылки. Знаете ли вы, есть ли такой инструмент (предпочтительно пакет Javascript)?
Спасибо
1 ответ
Пряжа используется для управления зависимостями и должна быть настроена для запуска в контейнере Docker для установки необходимых зависимостей, а не для копирования их с локального компьютера.
Основным преимуществом Docker является то, что он позволяет вам воссоздать среду разработки, не беспокоясь о машине, на которой он работает - то же самое относится и к Yarn, запустив yarn install
он устанавливает правильные версии для соответствующей архитектуры машины, на которой построен ваш образ Docker.
В ваш Dockerfile включите следующее после настройки вашего рабочего каталога:
RUN yarn install
Тогда вы должны быть все отсортированы!
Еще одна вещь, которую вы должны сделать, это включить каталог node_modules в ваши файлы.gitignore и .dockerignore, чтобы он никогда не включался при распространении вашего кода.
TL; DR: не копировать каталог node_modules с локального компьютера, включая RUN yarn install
в Dockerfile