Можете ли вы запустить gulp в Docker-контейнере Windows-Server-Core? - PullRequest
0 голосов
/ 23 января 2019

Мы пытаемся создать приложение на c #, которое бы выполняло некоторые операции по комплектации / минимизации для веб-сайта интерфейса пользователя.

В настоящее время мы используем узел 6 из-за зависимостей gulp. Будущая ветвь обновляется до узла 10, но это требует разных зависимостей узлов при переносе нашего проекта. Я подумал, что использование контейнера докера для сборки может помочь облегчить переключение между версиями узлов на нашей локальной машине.

Итак, я создал образ докера FROM microsoft/dotnet-framework:4.7.2-sdk

Затем я загрузил npm поверх него. Привязка тома к моей исходной директории Я могу установить пакеты npm, установить пакеты nuget и вызвать сборку, но это не удастся, потому что пропущен мой шаг gulp.

Я установил gulp как глобально в контейнере, так и локально в папке node_modules. Я получаю сообщение об ошибке типа

C:\Program Files\node\node-v6.16.0-win-x64\node_modules\gulp\node_modules\sver-compat\sver.js:19

  var semver = version.match(semverRegEx);
                      ^

TypeError: Cannot read property 'match' of undefined
    at new Semver (C:\Program Files\node\node-v6.16.0-win-x64\node_modules\gulp\node_modules\sver-compat\sver.js:19:23)
    at Function.match (C:\Program Files\node\node-v6.16.0-win-x64\node_modules\gulp\node_modules\sver-compat\sver.js:374:15)

У меня есть поиск по всей сети в течение нескольких дней, но мне не повезло найти что-нибудь, что может помочь мне с тем, что здесь происходит. Кто-нибудь был в состоянии заставить gulp успешно работать в док-контейнере Windows Server Core? Проблема с монтируемым каталогом? Использование Docker для Windows, если это имеет значение здесь.

1 Ответ

0 голосов
/ 31 января 2019

В Windows-Server-Core самое лучшее, что я могу предположить, это проблема с системными ссылками docker, volume-mounts и npm / gulp.

Я считаю, что пользователь, установленный в контейнере по умолчанию, хочет использоватьпапка c: \ containermappeddirectories.На данный момент я не уверен, что это настраивается.

Но моя работа вокруг выглядела так в PowerShell все работает в контейнере,

npm install -g  gulp@^3.9.1
md c:\ContainerMappedDirectories
cd c:\containermappedDirectories

robocopy /S "c:\MyUISource" C:\ContainerMappedDirectories 
npm install #installs gulp locally to this folder
gulp prod-build
robocopy /S C:\ContainerMappedDirectories\dist c:\MyUISource

Итак, я установил gulp глобально, я создаллокальное рабочее пространство скопировало мой исходный код и запустило npm / gulp, а затем скопировало мои выходные данные в смонтированное место.

В конце концов, это была лучшая работа, которую я смог выполнить для выполнения своей задачи.

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