完美解决:Docker部署SpringBoot项目后图片无法访问和上传解决办法!

以前使用FTP在Linux中使用java -jar xxx.jar部署SpringBoot项目时,由于在项目中指定了主机文件存放路径映射,可以直接访问服务器的文件。

但是最近入坑Docker,将SpringBoot项目加载成镜像后部署在Docker中运行,但是出现了一个问题,就是Docker无法识别宿主机的文件路径,所以部署在Docker容器里的web项目也就无法访问原来已经上传好的图片和新上传的图片,弄了一个晚上终于解决了这个问题!按照步骤一步一步操作可完美解决这个问题!

一、解决办法

1. 把容器中图片存放目录挂载到宿主机上图片存放目录

一般两个路径设置为相同的就不会出现问题

# 参数解释:
# 挂载目录-v {宿主机的文件存放目录绝对路径}:{容器中的文件存放目录绝对路径}
# 端口映射-p {宿主机的端口}:{容器暴露的端口}
# 容器名--name {容器名字}
docker run -p 8080:8080 -v /usr/turing/test/static/img:/usr/turing/test/static/img --name turing-jpa turing-jpa 

2. 把SpringBoot项目部署到Docker中运行

3. 将宿主机上的文件拷贝到容器中(路径要匹配挂载规则)

假设宿主机上的图片保存在/usr/turing/img/下,那么文件也要拷贝到容器中的/usr/turing/img/下

# docker cp {宿主机文件存放目录} {容器ID}:{容器中文件存放目录}
docker cp /usr/turing/img/ e0e149badb6e:/usr/turing/img/

然后就可以访问图片了,上传图片时也需要遵循挂载规则,保存文件目录的绝对路径要和容器的文件存放目录绝对路径最好保持一致,一定不会出错!

二、IDEA操作Docker挂载目录

最后放上一张更新图片成功的图!

发布了50 篇原创文章 · 获赞 46 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_41949328/article/details/104508521
今日推荐