您可以在Windows服务器核心docker容器中运行gulp吗?

时间:2019-01-23 13:08:02

标签: docker gulp

我们正在尝试构建一个具有gulp功能的c#应用程序,以便对前端网站进行捆绑/缩小。

由于gulp依赖性,我们当前正在使用节点6。将来的分支将更新到节点10,但是在迁移项目时需要不同的节点依赖性。我认为使用docker容器进行构建可能有助于减轻本地计算机上节点版本之间的切换。

所以我创建了一个docker镜像 FROM microsoft/dotnet-framework:4.7.2-sdk

然后我将npm加载到它的顶部。将卷绑定到我的源目录中,我能够安装npm软件包,安装nuget软件包并调用build,但是由于缺少我的gulp步骤,它将失败。

我已经在容器中全局安装了gulp,并在node_modules文件夹中局部安装了gulp。我最终遇到了类似的错误,

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的Docker。

1 个答案:

答案 0 :(得分:0)

在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,然后将我的输出复制回安装位置。

最后,这是我可以完成的最佳工作。