Docker中NGINX缓存配置:容器重启后如何保留缓存?
解决Nginx容器重启后OSM瓦片缓存丢失的问题
核心原因是你的缓存目录/TileCacheVol/tile位于容器内部文件系统中,容器重启时内部存储会被重置。要保留缓存,需要将该目录挂载到宿主机的持久化存储中。
具体步骤:
在宿主机创建持久化缓存目录
选择宿主机上一个固定路径创建目录,比如:mkdir -p /opt/nginx-osm-cache调整目录权限,匹配Nginx容器内运行用户的UID(大部分官方Nginx镜像使用UID 101):
chown -R 101:101 /opt/nginx-osm-cache启动容器时挂载卷
- 如果用
docker run命令启动,添加卷挂载参数:docker run -d -p 105:105 -v /opt/nginx-osm-cache:/TileCacheVol/tile <你的nginx镜像名> - 如果用Docker Compose,在
docker-compose.yml中添加volumes配置:services: nginx: image: <你的nginx镜像名> ports: - "105:105" volumes: - /opt/nginx-osm-cache:/TileCacheVol/tile - ./nginx.conf:/etc/nginx/nginx.conf # 若你的配置文件是挂载的,保留该行
- 如果用
验证缓存持久化
重启容器后,检查宿主机/opt/nginx-osm-cache目录下是否存在层级缓存文件(对应配置里的levels=1:2结构),请求瓦片时查看响应头x-nginx-cache是否返回HIT,确认缓存未丢失。
额外提示:
- 配置中
proxy_temp_path指向的/TileCacheVol/tile/tmp会自动在挂载的宿主机目录下创建,无需单独处理,权限继承父目录设置。 - 确保宿主机有足够磁盘空间匹配你设置的
max_size=500000m(500GB)。
内容的提问来源于stack exchange,提问作者Andreas
相关产品推荐
相关产品推荐

