为Windows创建Nodejs容器镜像.docx
为Windows创建Node.js容器镜像
即将到来的WindowsServer2016是第一个能运行Docker的Windows版本,上星期微软发布了相关的技术预览。
现在每个对在Windows上运行Docker感兴趣的人都能够通过以下方式进行初体验,首先你需要一个运行Windows2016TP3版本的虚拟机,这个虚拟机可以在Azure上或者本地部署。
在Windows上安装Docker
如果你只有一个尚未安装Docker的初始Window2016TP3系统,你可以参考快速入门指南。以管理员身份打开Powershell,并且执行以下命令:
wget-urihttp://aka.ms/setupcontainers-OutFileC:\ContainerSetup.ps1C:\ContainerSetup.ps1
这段脚本将下载并安装Docker守护进程以及一个基础镜像。现在Docker守护进程应该启动起来了,并且第一个基础镜像windowsservercore也运行起来了。你可以用dockerversion命令查看这个WindowsDocker守护进程的版本。
第一个专属的WindowsDocker镜像
作为第一个例子,我将演示如何为Windows创建一个Node.js镜像,我以官方
iojsDockerfile为基础,把这个文件迁移到Windows命令行,有以下三个步骤:
下载Node.js安装包
安装这个包
使用解释器作为CMD
这是我改造后的Windows版本的Dockerfile:
FROMwindowsservercore
ENVNPM_CONFIG_LOGLEVELinfo
ENVIOJS_VERSION3.2.0RUNpowershell-Commandwget-Uri/dist/v%IOJS_VERSION%/iojs-v%IOJS_VERSION%-x64.msi-OutFileiojs.msi-UseBasicParsingRUNmsiexec.exe/q/iiojs.msi
CMD[iojs]
请自行尝试,打开文本编辑器把这几行输入进去,并保存为一个名为Dockerfile的文件。然后用以下命令构建这个Docker镜像:
dockerbuild-tiojs.
dockertagiojs:latestiojs:3.2.0
至此你拥有了一个专属的Windows版本Docker镜像,同时上边第二句命令用iojs的版本号标记了iojs:latest镜像。你可能通过以下命令查看所有可用的镜像:
dockerimages
你可以通过运行这个镜像中的Node.js运行时来验证构建是否正常,如无意外将会打印出iojs的版本号。
PSC:\Users\vagrantdockerrun-itiojsiojs--versionv3.2.0
好了,我们现在已经在一个WindowsDocker容器中运行起最新的io.js了。
构建一个使用iojs:onbuild的Docker镜像
iojs官方的Docker镜像有另一个不错的Dockerfile使用了ONBUILD关键字,使用这个Dockerfile,可以非常简单地集成你的Node.js应用进一个新的Docker镜像中。你将不再需要在宿主机上安装Node.js。
我重新使用官方的iojs:onbuildDockerfile并把它迁移到Windows上。这是这个Dockerfile的Linux版本:
FROMiojs:3.1.0RUNmkdir-p/usr/src/appWORKDIR/usr/src/app
ONBUILDCOPYpackage.json/usr/src/app/ONBUILDRUNnpminstall
ONBUILDCOPY./usr/src/appCMD[npm,start]
它使用WORKDIR为之后的命令设定了当前执行目录,在Windows上这个命令和
COPY命令似乎还有待完善,目前的效果稍微和Linux容器上的有些差异,但是我找到了一个变通的方法。
以下是我修改官方onbuildDockerfile后能兼容目前Windowsdocker的版本:
FROMiojs:3.2.0RUNmkdir\appWORKDIR/app
ONBUILDCOPYpackage.jsonpackage.jsonONBUILD