Рабочие пространства пряжи и докер - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь использовать рабочие области пряжи, а затем помещаю свое приложение в образ Docker.

Структура папок выглядит следующим образом:

  • root
    • Dockerfile
    • node_modules /
      • libA -> ../libA
    • libA /
      • ...
    • app /
      • ...

К сожалению, Docker не поддерживает символические ссылки - поэтому онневозможно скопировать папку node_modules в корневом каталоге в образ Docker, даже если Dockerfile находится в корневом каталоге, как в моем случае.

Единственное, что я мог бы сделать, - это исключить символические ссылки с помощью.dockerignore, а затем скопируйте настоящий каталог в изображение.

Другая идея, которую я бы предпочел, заключалась в том, чтобы иметь инструмент, который заменяет символические ссылки на фактическое содержимое символической ссылки.Знаете ли вы, есть ли такой инструмент (предпочтительно пакет Javascript)?

Спасибо

1 Ответ

0 голосов
/ 05 июня 2018

Пряжа используется для управления зависимостями и должна быть настроена для запуска в контейнере Docker для установки необходимых зависимостей, а не для копирования их с локального компьютера.

Основным преимуществом Docker является то, что он позволяет вам воссоздать среду разработки, не беспокоясь о машине, на которой он работает - то же самое относится и к Yarn, запустив yarn install, которая устанавливает нужные версии длясоответствующая архитектура машины, на которой построен ваш образ Docker.

В вашем Dockerfile после настройки вашего рабочего каталога есть следующее:

RUN yarn install

Тогда вам следуетвсе отсортировано!

Еще одна вещь, которую вы должны сделать, это включить каталог node_modules в ваши .gitignore и .dockerignore файлов, поэтому он никогда не включается при распространении вашего кода.

TL; DR: Не копировать node_modules каталог с локального компьютера, включите RUN yarn install в Dockerfile

...