设备环境:物理机、局域网、v1.1.8
BUG现象:我使用筆記本的Firefox瀏覽器訪問,透過拖曳上傳docker運行所需的檔案map.mbtiles,啟動docker-compose後,在容器頁面顯示對檔案有讀寫權限,但是容器內報錯顯示無法讀取,手動SSH到目錄後,將檔案權限設定為666後,容器內的報錯消失,能正常運行。
使用的docker-compose.yml如下:
services:
# 1. 地圖圖磚服務 (TileServer GL)
tileserver:
image: maptiler/tileserver-gl
container_name: tileserver
restart: always
ports:
- "8080:8080"
volumes:
- ./data/map.mbtiles:/data/map.mbtiles
command: "-p 8080"
# 2. 地理編碼服務 (Nominatim)
nominatim:
image: mediagis/nominatim:5.2
container_name: nominatim
restart: always
ports:
- "8081:8080"
environment:
# PBF_URL 指定我們下載的資料路徑 (如果無法聯網下載,可掛載本地檔案)
# 這裡演示初次啟動自動從 Geofabrik 下載並匯入 (需網路)
- PBF_URL=https://download.geofabrik.de/asia/**-latest.osm.pbf
- REPLICATION_URL=https://download.geofabrik.de/asia/**-updates/
- IMPORT_STYLE=address
- NOMINATIM_PASSWORD=very_secret_password
- THREADS=4 # 根據您的 CPU 核心數調整
volumes:
- nominatim-data:/var/lib/postgresql/14/main
shm_size: 1gb # 重要:增加共享記憶體以提升 PostgreSQL 效能
volumes:
nominatim-data:
容器配置頁面顯示有讀寫權限:

容器報錯頁面如下:

問題研判
ACL權限管理不同步
檔案細節如下:
hakuto@Hakuto-fnOS:/vol1/1000/docker/map-service/data$ ll
total 203732
drwxrwx--x+ 1 hakuto Users 22 Jan 2 01:05 .
drwxrwx--x+ 1 hakuto Users 44 Jan 2 01:06 ..
-rw-rw----+ 1 hakuto root 208621568 Jan 1 23:27 map.mbtiles
透過拖曳上傳的map.mbtiles被歸類到root用戶組,並且使用getfacl指令結果如下:
hakuto@Hakuto-fnOS:/vol1/1000/docker/map-service/data$ getfacl map.mbtiles
# file: map.mbtiles
# owner: hakuto
# group: root
user::rw-
group::--x #effective:---
mask::rw-
other::---
tileserver 容器使用node(999)來運行,遇到上面的規則後,便會無法讀寫map.mbtiles導致容器報錯。
手動chmod 666後容器能夠不報錯正常執行,同樣的docker配置在synology系統上不會出現這個問題。
出现频率:必现
联系方式:aiden890406@gmail.com
日志文件:無