在Docker上搭建SharePoint Framework开发环境(Nano Server版)

若要在Windows 10上使用Nano Server的映像,需要擁有像Visual Studio訂閱一樣的Windows Server所有權。請注意。Microsoft軟體補充許可條款。追記至2017年3月1日。

2017年3月11日补充:
已修复将模块复制到最后一个Nano Server镜像的部分。
2017年3月11日补充到此为止。

鉴于SharePoint Framework(SPfx)在2017/2/23公开推出,我整理了一些更新和备忘录来更新我的本地环境。标题为Nano Server编程是因为我想在Nano Server上进行开发。当然,也可以选择在Linux镜像上进行开发。

本篇投稿是参考了Stefan Scherer先生关于如何构建Node.js Nano Server Docker基础镜像的内容。

动机 jī)

因为Node.js和SPfx本身经常有更新,所以我尽量不想将它们放在主机端。
另外,如果将其作为容器镜像,即使有多个版本,也可以轻松地共存。

专为忙碌人士设计

由于waldekm在Docker Hub上发布了图像,所以使用它是最方便的。根据附带的评论指出,它可以在Mac上运行,所以看起来是基于Linux构建的。

Docker Hub – waldekm/spfx 的中文解释:

在命令行(在macOS上):
cd [你的项目]
docker run -h spfx -it –rm –name ${PWD##*/} -v $PWD:/usr/app/spfx -p 5432:5432 -p 4321:4321 -p 35729:35729 waldekm/spfx

在命令行(在Windows上,假设你的项目位于c:\projects\spfx-helloworld):
cd c:\projects\spfx-helloworld
docker run -h spfx -it –rm –name spfx-helloworld -v /c/projects/spfx-helloworld:/usr/app/spfx -p 5432:5432 -p 4321:4321 -p 35729:35729 waldekm/spfx

操作环境

這個手續在以下的環境中進行了確認:
– Windows 10 專業版 Insider 預覽版(Build 15048)
– Docker 版本 17.03.0-ce

整体的动向

由于无法直接在Nano Server镜像上安装Node,因此请按以下步骤进行操作:
1. 在Server Core镜像上安装Node.JS
2. 安装Yeoman、gulp和SharePoint生成器
3. 将完整的Node环境复制到Nano Server镜像上。

在Server Core映像中安装Node.JS。

首先,准备一个类似以下的Dockerfile。

FROM microsoft/windowsservercore

ENV NPM_CONFIG_LOGLEVEL info  
ENV NODE_VERSION 6.10.0

RUN powershell -Command \
    wget -Uri https://nodejs.org/dist/v%NODE_VERSION%/node-v%NODE_VERSION%-x64.msi -OutFile node.msi -UseBasicParsing ; \
    Start-Process -FilePath msiexec -ArgumentList /q, /i, node.msi -Wait ; \
    Remove-Item -Path node.msi

请确认您的Docker是否正在运行Windows容器,如果从windowsservercore镜像中下载失败,请使用node的6.10.0版本,这是截止到2017年3月10日的最新LTS版本。

准备好Dockerfile后,执行构建操作。
docker build -t node:6.10.0 .
标签可根据个人喜好添加。

执行image中已存在的node -v命令,以确认是否已正确更新到6.10.0版本。
通过docker run -it –rm node:6.10.0 node -v命令运行。

安装Yeoman、gulp和SharePoint生成器。

根据以上步骤制作的映像为基础,为了安装所需工具,准备以下的Dockerfile。您也可以将其与前一个Dockerfile合并到一个文件中,而不必将映像分割开来。

FROM node:6.10.0

RUN npm install -g npm
RUN npm install -g yo gulp
RUN npm install -g @microsoft/generator-sharepoint@1.0.0

预览版本时,安装命令是“install -g npm@3”,但正式发布后,删除了对@3的说明。*提交记录
另外,似乎也不再需要安装windows-build-tools。*提交记录
只需将generator设置为@latest,即可获取最新版本。
设置您的SharePoint客户端网页部件开发环境。

准备好Dockerfile后进行构建。
docker build -t node:6.10.0-spfx1.0.0 .
您也可以自行决定标签等选项。

将node环境复制到Nano Server映像中

启动镜像并将所需文件复制到主机。

docker run --name=spfx node:6.10.0-spfx1.0.0
docker cp "spfx:C:\Program Files\nodejs" nodejs
docker cp "spfx:C:\Users\ContainerAdministrator\AppData\Roaming\npm" npm
docker stop spfx

为了将 nodejs 和 npm 的文件夹导入到 Nano Server,准备以下的Dockerfile。

2017/3/11 修改了 Dockerfile

FROM microsoft/nanoserver

-COPY nodejs /windows/system32/
+COPY ["nodejs", "/Program Files/nodejs/"]
-COPY npm /Users/ContainerAdministrator/AppData/Roaming/
+COPY ["npm", "/Users/ContainerAdministrator/AppData/Roaming/npm/"]

-RUN setx PATH %PATH%;C:\windows\system32;C:\Users\ContainerAdministrator\AppData\Roaming
+RUN setx PATH "%PATH%;C:\Program Files\nodejs\;C:\Users\ContainerAdministrator\AppData\Roaming\npm"

构建完成之后,docker镜像名为spfx:1.0.0 。

创建项目

确保能够使用已创建的映像来创建SharePoint Framework项目。

启动容器。
使用docker run -it –rm spfx:1.0.0 powershell命令。

我尝试创建一个”你好,世界”的程序。

mkdir helloworld
cd helloworld
yo @microsoft/sharepoint
2017031001.PNG

在实际开发时,您可以使用-v参数来共享主机端的文件夹,或使用-p参数来分配端口。

赠品

2017031002.PNG
广告
将在 10 秒后关闭
bannerAds