docker部署springboot 静态资源 404解决
原因:
docker环境与服务器文件目录隔离,无法直接访问服务器目录的静态资源,需要做目录挂载
挂载
含义
挂载(Mount) 是计算机领域中的一个术语,通常用于描述将某个存储资源(如文件、目录、设备等)连接到系统的一个指定路径,使得该资源的内容可以通过该路径访问。在 Docker 中,挂载通常是指将主机(Host)上的文件或目录连接到容器内部的一个路径,从而实现主机和容器之间的文件共享。
作用
数据共享
挂载允许主机和容器之间共享文件或目录。
例如:将主机的配置文件挂载到容器中,容器可以直接使用这些配置。
数据持久化
容器本身是临时的,容器内的数据会随着容器的删除而丢失。
通过挂载,可以将容器内的数据保存到主机上,从而实现持久化。
灵活性
可以动态地将不同的文件或目录挂载到容器中,而无需修改容器镜像。
步骤
- 使用 -v 或 --volume 选项
-v 或 --volume 选项允许你将主机上的文件或目录挂载到容器内的指定路径。
docker run -v /host/path:/container/path image_name
● /host/path:主机上的文件或目录路径。
● /container/path:容器内的挂载路径。
● image_name:Docker 镜像名称。
示例:
docker run -v /home/user/data:/app/data my_image
这个命令将主机上的 /home/user/data 目录挂载到容器内的 /app/data 目录。
2. 使用 --mount 选项
–mount 选项提供了更详细的挂载配置,语法如下:
docker run --mount type=bind,source=/host/path,target=/container/path image_name
● type=bind:指定挂载类型为绑定挂载。
● source=/host/path:主机上的文件或目录路径。
● target=/container/path:容器内的挂载路径。
示例:
`docker run --mount type=bind,source=/home/user/data,target=/app/data` my_image
- 使用 Docker Compose
如果你使用 Docker Compose 来管理容器,可以在 docker-compose.yml 文件中定义挂载:
version: '3'
services:
my_service:
image: my_image
volumes:
- /host/path:/container/path
示例:
services:
# Spring Boot 应用
app:
image: pikimbi-backend:v1.0.0
volumes:
- /www/wwwroot/imgPikimbi/user:/app/www/wwwroot/imgPikimbi/user
也就是访问/app/www/wwwroot/imgPikimbi/user就能访问到/www/wwwroot/imgPikimbi/user
【注意】必须需要从容器根目录开始挂载。 即:/app/xxx