语境:
我有一个Java Spring Boot应用程序,它已部署在Docker Container上运行。我使用Docker Toolbox是准确的。该应用程序公开了一些REST API来上传和下载文件。该应用程序在Docker上运行正常,即我可以使用API上传和下载文件。
问题:
在应用程序中,我将路径硬编码为“C:\ SomeFolder”。这个存储在Docker容器上的位置是什么?
c:\SomeFolder
,假设你有一个Windows容器。但是,这是您通常通过命令行选项或环境变量设置的参数类型。
在Docker上运行时如何强制应用程序使用Host文件系统而不是Docker的File系统?
使用docker run -v
选项或等效选项从该位置的主机安装某个目录。无论主机上该目录的内容是什么,都将在启动时替换容器中的内容,之后主机中的更改应反映在容器中,反之亦然。
如果您有机会重新考虑此设计,那么围绕文件所有权等存在许多潜在的问题。解决这些问题的最简单方法是将数据存储在某个地方,例如数据库(可能在Docker中运行,也可能不运行),并使用网络I / O向容器发送数据或从容器发送数据,并尽可能少地存储在容器中。容器文件系统。 docker run -v
是一种很好的方法,可以在典型的面向服务器的用途中注入配置文件并获取日志文件。