如何将我的 appsettings.json 从 Docker 容器持久保存到主机并挂载该单个文件

How to persist my appsettings.json to host machine from Docker container and mount that single file

我有一个已容器化的 aspnetcore 应用程序,它正在 运行 正常运行,appsettings.jon 文件中节点 ConnectionStrings 的值正在根据从 Web 界面输入的值进行保存当正在设置应用程序时,当应用程序更新时,不应在初始设置后覆盖此文件,因为您知道容器是短暂的。我有一个 SetUpController 用于执行此操作并且一切正常,这样做的原因是应用程序 运行s 在我们大多数客户的前提下,他们有不同的设置。

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

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

我在网上查过一些想法,但 none 似乎可行。

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

希望对您有所帮助

所以基本上因为我使用 Docker 工具箱 windows 默认情况下可用的主机文件夹是 /c/Users 你可以通过打开 VirtualBox -> 设置 -> 共享来检查文件夹,但我试图挂载 VM 无权访问的 /c/app。所以我将我的 运行 命令更改为这个

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

此外,如果您正在为 windows 使用 Docker 工具箱,请确保您正在装载的文件存在于 运行 在某些情况下执行命令之前的位置,如果您是 运行遇到问题我建议还使用

重新启动虚拟机
docker-machine restart default

谢谢@pressharp 这对我有用 Linux:

docker 运行 -d --name=名字
-p 80:80
-v /opt/dockertest2/appsettings.json:/app/appsettings.json
图片名称