使用DotNet Core和Docker在Synology NAS上部署应用

在现代软件开发中,容器化技术已经成为一种趋势,它提供了轻量级的虚拟化解决方案,使得应用程序的部署变得更加灵活和便捷。本文将介绍如何在Synology NAS上使用DotNet Core和Docker部署应用程序。

什么是DotNet Core?

DotNet Core是微软推出的新一代开发平台,它与传统的.NET框架并存,而不是替代它。DotNet Core具有许多令人兴奋的特性:

  • 开源:由微软和.NET社区在GitHub上维护。
  • 模块化结构:所有包都可在NuGet上获取。
  • 跨平台:可在Windows、Mac OS和Linux上运行。
  • Docker支持:Docker Hub上提供了DotNet Core镜像。

什么是Docker?

Docker是一种轻量级的虚拟化应用程序,它允许在NAS上运行容器。可以自己构建容器,或者从Docker Hub下载。Docker具有以下优势:

  • 轻量级:可以在一台机器上运行多个Docker镜像。
  • 快速冷启动。
  • 易于部署
  • 在多个平台间具有可移植性,包括Max、Linux和Windows。

Synology与Docker

Synology是基于Linux的,如果NAS有足够的性能,可以在它上面运行Docker。可以检查型号是否支持Docker。

操作步骤

在Synology NAS上安装Docker是下一步。打开Packer Center并搜索Docker:

Docker会在安装过程中创建一个名为"/docker"的文件夹。卷名取决于NAS配置。该文件夹默认是隐藏的!这让花了一些时间才弄清楚这个文件夹是如何创建的。将使用这个文件夹作为Docker应用程序的根文件夹。

有多种方式可以构建DotNet Core应用程序。更喜欢使用VS 2015社区版和DotNet Core堆栈,它功能丰富且免费。确保安装了DotNet Core Tools预览版。可以在这里找到所有所需的设置文件。应用程序本身不是这篇博客的主要目标,所以保持简单,创建了一个HelloWord MVC应用程序。

下一步是将解决方案发布到NAS。可以用很多方式来完成这个任务,只要确保文件被复制到"/docker/helloword"。发布选项就是用来做这个的:

点击"发布"将编译并将部署文件复制到\\\docker\helloworld

构建Docker镜像需要一些步骤:

  • Docker仓库拉取镜像。
  • 创建Dockerfile。
  • 通过telnet会话构建Docker镜像。

需要一个"基础"镜像,可以在上面合并文件。Docker Hub上有很多镜像可供选择。在案例中,需要一个只包含asp.net core库的镜像。这是一个轻量级镜像,并且具有非常好的冷启动性能。打开NAS上的Docker应用程序并搜索"microsoft/aspnetcore"。选择"1.0.1"作为标签。

"Dockerfile"是一个没有文件扩展名的文件。它是一种带有Docker命令的批处理文件。在镜像构建过程中需要这个文件。可以使用喜欢的任何文本编辑器创建这个文件。将文件保存在文件夹\\\docker\helloworld中。

Dockerfile内容:

FROM microsoft/aspnetcore:1.0.1 COPY . /app WORKDIR /app ENV ASPNETCORE_URLS http://*:7500 EXPOSE 7500 ENTRYPOINT dotnet webApp.dll

Dockerfile执行了几个重要步骤:

  • 将使用microsoft/aspnetcore:1.0.1作为helloword镜像。
  • 设置HelloWord文件的位置。
  • 设置应用程序IP端口。
  • 设置应用程序入口点。

这一步将发布的文件和下载的镜像合并成一个新的镜像。这个新镜像将被启动,并且是新的应用程序,所以几乎完成了。步骤如下:

  • 从Windows机器上开始telnet
  • 使用用户名和密码登录。请注意,密码和用户名都是区分大小写的。

Telnet命令:

sudo -i cd /volume1/docker/helloworld docker build -t helloworld .

sudo -i需要一个root级别的账户。在设置中,第一次sudo登录尝试总是失败。请保持一个空格在helloworld和点之间!否则构建命令将失败。Docker构建新镜像,可以在telnet终端和NAS上的Docker管理应用程序中检查结果。

现在所有的艰苦工作都完成了。只需要启动镜像。在启动过程中,必须将端口7500钩子到这个镜像上。

  • 点击启动(见前一个图像)。
  • 点击高级设置并选择"端口设置"标签。
  • 输入"7500"到本地端口。
  • 完成向导。

容器菜单显示应用程序正在新创建的容器中运行!

在浏览器中启动应用程序,不要忘记URL中的端口号。

现在一切都在工作。唯一的缺点是用户必须知道端口号。这可能会很烦人,特别是当有多个站点托管时。通过反向代理,可以将端口号重定向到子域名。Synology有这个功能,设置起来很容易:

  • 转到控制面板。
  • 选择应用程序门户。
  • 选择"反向代理"标签。
  • 创建新的。
  • 设置值。

启动浏览器并输入带有子域名的完整URL。它确认一切都按预期工作。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485