如何将我的appsettings.json持久化到Docker容器中的主机并挂载单个文件

时间:2019-01-25 13:28:29

标签: docker asp.net-core .net-core docker-volume linux-containers

我有一个已被容器化的aspnetcore应用程序,它正在正常运行,正在根据应用程序设置时从Web界面输入的值来保存appsettings.jon文件中节点ConnectionStrings的值,如您所知,容器是短暂的,则在更新应用程序的初始设置后不会被覆盖。我有一个SetUpController可以执行此操作,并且一切正常,执行此操作的原因是该应用程序在大多数客户的前提下运行,并且它们具有不同的设置。

我的问题是如何确保在更新容器时appsettings.jon不被覆盖。我希望能够在成功安装应用程序之后将文件复制到主机卷,并在下次应用程序运行时从主机卷挂载appsettings.json。我在Windows和Docker Toolbox上使用linux容器,因为运行应用程序的系统无法为Windows安装Docker。

如何在应用程序运行时随时挂载存储在主机上的appsettings.json?

我已经在线检查了想法,但似乎都没有用。

2 个答案:

答案 0 :(得分:0)

我将为此使用永久性存储,https://docs.docker.com/storage/上的docker文档将比我更好地解释如何用于您的目的。

希望有帮助

答案 1 :(得分:0)

所以基本上,因为我使用的是Windows的Docker Toolbox,默认情况下可用的主机文件夹是/ c / Users,您可以通过打开VirtualBox-> settings-> Shared Folders进行检查,但是我试图挂载/ c / app VM无权访问。所以我将运行命令更改为此

docker run -d --name=containername -p 80:80 -v /c/Users/appsettings.json:/app/appsettings.json imagename

另外,如果您使用Windows的Docker ToolBox,则在遇到问题的情况下(在某些情况下)运行命令之前,请确保要装载的文件存在于该位置,我建议也使用以下方式重新启动虚拟机

docker-machine restart default