在现代软件开发中,容器化技术已经成为一种趋势,它提供了轻量级的虚拟化解决方案,使得应用程序的部署变得更加灵活和便捷。本文将介绍如何在Synology NAS上使用DotNet Core和Docker部署应用程序。
DotNet Core是微软推出的新一代开发平台,它与传统的.NET框架并存,而不是替代它。DotNet Core具有许多令人兴奋的特性:
Docker是一种轻量级的虚拟化应用程序,它允许在NAS上运行容器。可以自己构建容器,或者从Docker Hub下载。Docker具有以下优势:
Synology是基于Linux的,如果NAS有足够的性能,可以在它上面运行Docker。可以检查型号是否支持Docker。
在Synology NAS上安装Docker是下一步。打开Packer Center并搜索Docker:
Docker会在安装过程中创建一个名为"
有多种方式可以构建DotNet Core应用程序。更喜欢使用VS 2015社区版和DotNet Core堆栈,它功能丰富且免费。确保安装了DotNet Core Tools预览版。可以在这里找到所有所需的设置文件。应用程序本身不是这篇博客的主要目标,所以保持简单,创建了一个HelloWord MVC应用程序。
下一步是将解决方案发布到NAS。可以用很多方式来完成这个任务,只要确保文件被复制到"
点击"发布"将编译并将部署文件复制到\\
构建Docker镜像需要一些步骤:
需要一个"基础"镜像,可以在上面合并文件。Docker Hub上有很多镜像可供选择。在案例中,需要一个只包含asp.net core库的镜像。这是一个轻量级镜像,并且具有非常好的冷启动性能。打开NAS上的Docker应用程序并搜索"microsoft/aspnetcore"。选择"1.0.1"作为标签。
"Dockerfile"是一个没有文件扩展名的文件。它是一种带有Docker命令的批处理文件。在镜像构建过程中需要这个文件。可以使用喜欢的任何文本编辑器创建这个文件。将文件保存在文件夹\\
Dockerfile内容:
FROM microsoft/aspnetcore:1.0.1
COPY . /app
WORKDIR /app
ENV ASPNETCORE_URLS http://*:7500
EXPOSE 7500
ENTRYPOINT dotnet webApp.dll
Dockerfile执行了几个重要步骤:
这一步将发布的文件和下载的镜像合并成一个新的镜像。这个新镜像将被启动,并且是新的应用程序,所以几乎完成了。步骤如下:
Telnet命令:
sudo -i
cd /volume1/docker/helloworld
docker build -t helloworld .
sudo -i需要一个root级别的账户。在设置中,第一次sudo登录尝试总是失败。请保持一个空格在helloworld和点之间!否则构建命令将失败。Docker构建新镜像,可以在telnet终端和NAS上的Docker管理应用程序中检查结果。
现在所有的艰苦工作都完成了。只需要启动镜像。在启动过程中,必须将端口7500钩子到这个镜像上。
容器菜单显示应用程序正在新创建的容器中运行!
在浏览器中启动应用程序,不要忘记URL中的端口号。
现在一切都在工作。唯一的缺点是用户必须知道端口号。这可能会很烦人,特别是当有多个站点托管时。通过反向代理,可以将端口号重定向到子域名。Synology有这个功能,设置起来很容易:
启动浏览器并输入带有子域名的完整URL。它确认一切都按预期工作。