docker部署的springboot如何保存文件时,如何同步保存到宿主机。

现在是用 docker 部署了一个 springboot的项目
项目有一个功能是保存图片到主机的。
在本地测试是没有问题的。部署到服务器上之后,接口没有报错,但是服务器对应路径没有看到该图片
后面发现是容器启动,可能存到容器里了,貌似也没有发现
后来启动容器时加上了 -v 挂载目录,还是没有作用

现在想问的是:
用docker部署,要怎么 将文件存入 宿主机的路径里。(如不考虑分布式文件相关内容)

容器内也没有文件?

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7770480
  • 你也可以参考下这篇文章:【网络教程】群晖中如何安装甜糖,手把手教您Docker安装甜糖,如何解决甜糖安装&使用中遇到的问题(已解决)
  • 除此之外, 这篇博客: Docker学习总结(详细记录Docker部署SpringBoot项目内容,含安装、配置、部署整个过程)中的 2、Docker所解决的问题: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •       通常情况下,一个应用正常启动时,可能需要的环境要有JDK、Tomcat服务器和配置文件等等,同时又要需要考虑版本兼容问题,若出现部分配置未弄好可能导致应用无法启动。Docker就是将其集成一个容器内,解决所出现的问题。

          如:在Linux上安装JDK/MySQL时,需要下载不同的Jar包,再加上配置不同的信息内容;而使用Docker只需要一条命令 docker pull mysql/java 即可。

  • 以下回答由chatgpt基于相关博客总结生成:

    可以使用Docker数据卷将文件同步保存到宿主机。具体步骤如下:

    1. 创建数据卷

    可以在运行Docker容器时使用-v参数创建数据卷,例如:

    $ docker container run -d --name my_app -v /my_data:/app/data my_image
    

    这里创建了一个名为my_data的数据卷,将容器内的/app/data目录挂载到宿主机上的/my_data目录。

    1. 修改应用程序代码

    应用程序需要将文件保存到容器内的/app/data目录下,以便能够自动挂载到宿主机的目录中。

    1. 使用相对路径

    为了便于在不同的环境中运行应用程序,可以将数据卷的挂载路径设置为相对路径。如:

    $ 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目录。

    最后,需要在应用程序中使用相对路径保存文件,以便能够正确地同步到宿主机中。