QGIS的docker管理
This commit is contained in:
@@ -167,6 +167,33 @@ def map_container_to_host(path: str) -> str:
|
||||
return path
|
||||
|
||||
|
||||
def map_template_to_container(host_path: str) -> str:
|
||||
"""将主机端模板路径映射到容器内本地路径(预拷贝后绕过 9P)。
|
||||
|
||||
主机: F:/project/xian/xian_algorithm_new/app/data/template/rainfall/xxx.qgz
|
||||
容器: /data/template/rainfall/xxx.qgz
|
||||
"""
|
||||
try:
|
||||
from config import settings
|
||||
container_tpl = getattr(settings, "QGIS_DOCKER_TEMPLATE_DIR", "") or ""
|
||||
except Exception:
|
||||
container_tpl = ""
|
||||
|
||||
if not container_tpl:
|
||||
# fallback: 用通用映射(走 9P,慢)
|
||||
return map_host_to_container(host_path)
|
||||
|
||||
normalized = host_path.replace("\\", "/").lower()
|
||||
# 找 "app/data/template/" 后面的部分
|
||||
marker = "app/data/template/"
|
||||
idx = normalized.find(marker)
|
||||
if idx >= 0:
|
||||
relative = host_path.replace("\\", "/")[idx + len(marker):]
|
||||
return f"{container_tpl.rstrip('/')}/{relative}"
|
||||
|
||||
return map_host_to_container(host_path)
|
||||
|
||||
|
||||
def build_docker_volume_mounts() -> list:
|
||||
"""
|
||||
构建 Docker 卷挂载参数列表(用于 docker run)。
|
||||
|
||||
Reference in New Issue
Block a user