如何在Asp核心Web应用(MVC)上创建和使用Docker卷

艾米利斯·瓦多帕拉斯(Emilis Vadopalas)

我有网络应用,正在使用docker将其部署到Linux服务器。我为我的应用程序使用ASP .NET CORE 2.1,MVC模型,并通过Visual Studio的集成Container Registry将其发布到docker hub。从我的服务器上拉图像,然后运行它。问题是,每次我将更新发布到我的应用程序时,它都会重置应用程序中的所有文件,这就是容器的工作方式。但是我需要一些文件保留在服务器中,并且每次我更新应用程序时都不要重置它们,因此我需要使用卷。但是我不知道如何使用ASP CORE应用程序和docker卷,我想我可以创建它们,但是如何从应用程序访问它们呢?

我尝试了一些在网上找到的方法,

所以通常我要运行docker,我需要从hub.docker中将其拉出: docker pull mydockerid/appname:tag

然后,使用命令运行它:docker run -p 3000:80 mydockerid/appname:tag就是这样。

我试过了: docker run -p 3000:80 -v ~mnt/files/xml:/xml mydockerid/appname:tag

据我了解,它应该使docker使用服务器文件夹“ mnt / files / xml”作为我的名为“ xml”的应用程序中的文件夹,但是不起作用。

我也在使用Digital ocean,目录“ mnt / files / xml”是连接到Droplet的卷。

完美的解决方案是让我可以在Droplet卷内创建docker卷,但实际上任何可行的解决方案都很棒!

感谢帮助 !

艾米利斯·瓦多帕拉斯(Emilis Vadopalas)

好吧,我很近

要在Docker中创建卷,您需要从服务器中选择目录,并从应用中选择文件夹。我的问题是,我在应用程序中显示了错误的目录。因为在docker容器中可以说根文件夹位于/ app / root下,所以我的xml文件夹也是如此,所以我需要修复的是使用docker run -p 3000:80 -v ~mnt/files/xml:/app/xml mydockerid/appname:tag而不是docker run -p 3000:80 -v ~mnt/files/xml:/xml mydockerid/appname:tag第一个目录始终来自服务器,第二个目录始终来自应用程序。

至于数字海洋中的数量:

转到左侧管理下的卷。按右上方的创建音量按钮。选择Volume的配置,然后将其附加到您的液滴上。

安装它:

$ mkdir -p /mnt/files 

# Mount your volume at the newly-created mount point:
$ mount -o discard,defaults,noatime /dev/disk/by-id/scsi-0DO_volume_name /mnt/files 

# Change fstab so the volume will be mounted after a reboot
$ echo '/dev/disk/by-id/scsi-0DO_volume_name /mnt/files ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

如果进入卷上“更多”下的“配置说明”,Digital Ocean实际上将显示所有这些命令和卷名。

然后,因为我的DO卷已挂载到/ mnt / files,我通过filezila连接到服务器,将所需的文件放在名为“ xml”的文件夹中,并使用运行docker容器docker run -p 3000:80 -v ~mnt/files/xml:/xml mydockerid/appname:tag,现在无论服务器中的xml文件夹中有什么。它将在我的应用程序内部(名为xml的文件夹)中读取,并且我可以更新应用程序,并且该文件夹永远不会丢失数据。同样,我可以将此DO体积移动到另一个DO液滴而不会丢失数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何为 .net 核心 MVC Web 应用程序创建和显示 PDF 文件?

.net 核心 Web 应用程序 docker 映像如何在 Mac OS 上运行?

如何在docker中使用文件系统创建卷?

如何在Docker中使用Selenium运行dotnet核心应用

如何使用docker volume命令创建的卷?

如何在linux服务器上使用pm2运行asp.net核心应用程序

如何为Web应用程序创建和使用自定义类的变量?

如何在Docker Compose中创建Docker卷

使用 Visual Studio 代码创建 Asp.net MVC 应用程序(非核心)

如何在ASP.NET MVC应用程序上使用Github API?

如何在.NET MVC中使用C#创建和删除边缘属性(Titan 1.0)?

如何在 docker 中使用 cargo 构建和运行我的 Actix 应用程序?

在MFC应用程序上创建和使用Dll

如何在ASP .NET MVC 5 Web应用程序的Seed方法中通过UserManager创建ApplicationUser

如何在Visual Studio Community 2013中创建ASP.NET MVC 5 Web应用程序?

如何在其他项目上创建和使用Android库项目

如何在Mule配置上创建和使用全局变量?

如何在云数据实验室上创建和使用UDF?

如何在所有 Web 服务器上运行 asp.net 核心应用程序?这就是红隼的原因吗?

如何在Docker卷中创建到文件的硬链接

如何在 Docker 中创建双向绑定卷?

如何在单独的机器上构建和签名iOS应用?

如何在Android设备上创建和阅读日志?

如何在NPM上创建和发布Vuejs组件

如何在Xamarin表单上创建和重复动画

如何在macOS上创建和存储matplotlib样式文件?

如何在.net MVC4上正确创建和下载动态生成的二进制* .xlsx文件?

如何在Google Container Engine上创建kubernetes NFS卷

在Docker上托管后如何在.Net Core Web API中创建和访问文件夹结构