现在是用 docker 部署了一个 springboot的项目
项目有一个功能是保存图片到主机的。
在本地测试是没有问题的。部署到服务器上之后,接口没有报错,但是服务器对应路径没有看到该图片
后面发现是容器启动,可能存到容器里了,貌似也没有发现
后来启动容器时加上了 -v 挂载目录,还是没有作用
现在想问的是:
用docker部署,要怎么 将文件存入 宿主机的路径里。(如不考虑分布式文件相关内容)
容器内也没有文件?
通常情况下,一个应用正常启动时,可能需要的环境要有JDK、Tomcat服务器和配置文件等等,同时又要需要考虑版本兼容问题,若出现部分配置未弄好可能导致应用无法启动。Docker就是将其集成一个容器内,解决所出现的问题。
如:在Linux上安装JDK/MySQL时,需要下载不同的Jar包,再加上配置不同的信息内容;而使用Docker只需要一条命令 docker pull mysql/java 即可。
可以使用Docker数据卷将文件同步保存到宿主机。具体步骤如下:
可以在运行Docker容器时使用-v
参数创建数据卷,例如:
$ docker container run -d --name my_app -v /my_data:/app/data my_image
这里创建了一个名为my_data
的数据卷,将容器内的/app/data
目录挂载到宿主机上的/my_data
目录。
应用程序需要将文件保存到容器内的/app/data
目录下,以便能够自动挂载到宿主机的目录中。
为了便于在不同的环境中运行应用程序,可以将数据卷的挂载路径设置为相对路径。如:
$ docker container run -d --name my_app -v $(pwd)/data:/app/data my_image
这样,无论在任何位置运行容器,都能正确地挂载数据卷。
如果已经在运行的容器中添加了数据卷,可以使用Docker命令将它们保存到本地,如下:
$ docker container cp my_app:/app/data /my_data
这会将容器中的/app/data
目录复制到宿主机上的/my_data
目录。
最后,需要在应用程序中使用相对路径保存文件,以便能够正确地同步到宿主机中。