Рабочие пространства пряжи и докер

Я пытаюсь использовать рабочие области пряжи, а затем помещаю свое приложение в образ 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

Другие вопросы по тегам