You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure容器实例部署Openrouteservice遇到问题

排查Azure容器实例部署Openrouteservice时docker compose up无响应的问题

核心排查方向与解决方案

1. 验证Docker Context配置

先确认当前是否切换到了目标Azure Context:

docker context ls
docker context use <你的Azure Context名称>

如果Context未正确切换,docker compose up会默认在本地执行,自然无云端部署反应。

2. 修复Azure文件共享挂载问题

你修改后的Compose文件中,Azure文件共享的挂载写法存在错误:

# 错误写法:Azure文件卷不能直接在卷名后追加子路径
- mydata/puerto-rico-latest.osm.pbf:/home/ors/ors-core/data/osm_file.pbf

正确做法是:

  • 将puerto-rico-latest.osm.pbf上传到Azure文件共享orscontainersharename的根目录
  • 调整挂载规则为卷到容器目录的映射,而非文件级映射:
volumes:
  - mydata:/home/ors/ors-core/data
  - mydata:/home/ors/ors-core/logs/ors
  - mydata:/home/ors/tomcat/logs
  - mydata:/home/ors/ors-conf

同时确保存储账户orscontainerstorageacc、文件共享orscontainersharename存在,且当前Azure账号拥有存储文件数据参与者权限。

3. 移除冲突的build字段

你的Compose文件同时保留了build和image字段:

image: openrouteservice/openrouteservice:latest
build:
  context: ../
  args:
    ORS_CONFIG: ./openrouteservice/src/main/resources/ors-config-sample.json
    OSM_FILE: ./openrouteservice/src/main/files/heidelberg.osm.gz

Azure容器实例不支持云端构建镜像,build字段会导致Compose尝试本地构建,与Azure Context冲突引发静默阻塞。需完全删除build块,并指定ACR中的完整镜像地址(例如:orscontainerstorageacc.azurecr.io/openrouteservice/openrouteservice:latest)。

4. 补充资源配置与调整JVM参数

Openrouteservice构建地图需要足够资源,需在Compose中添加资源限制:

services:
  ors-app:
    # ... 其他配置
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 4G
        reservations:
          cpus: '1'
          memory: 2G

同时将JVM堆内存调整到4G以上,避免构建地图时内存不足:

JAVA_OPTS=-Djava.awt.headless=true -server -XX:TargetSurvivorRatio=75 -XX:SurvivorRatio=64 -XX:MaxTenuringThreshold=3 -XX:+UseG1GC -XX:+ScavengeBeforeFullGC -XX:ParallelGCThreads=4 -Xms2g -Xmx4g

5. 启用调试日志定位问题

执行命令时添加调试参数,查看具体执行细节:

docker compose up --debug

若容器已创建但未启动,可查看容器日志:

docker logs ors-app

修改后的完整Compose示例

version: '2.4'
services:
  ors-app:
    container_name: ors-app
    ports:
      - "8080:8080"
      - "9001:9001"
    # 替换为你的ACR完整镜像路径
    image: orscontainerstorageacc.azurecr.io/openrouteservice/openrouteservice:latest
    user: "0:0" # 避免UID/GID环境变量在Azure环境中失效
    volumes:
      - mydata:/home/ors/ors-core/data
      - mydata:/home/ors/ors-core/logs/ors
      - mydata:/home/ors/tomcat/logs
      - mydata:/home/ors/ors-conf
    environment:
      - BUILD_GRAPHS=True
      - "JAVA_OPTS=-Djava.awt.headless=true -server -XX:TargetSurvivorRatio=75 -XX:SurvivorRatio=64 -XX:MaxTenuringThreshold=3 -XX:+UseG1GC -XX:+ScavengeBeforeFullGC -XX:ParallelGCThreads=4 -Xms2g -Xmx4g"
      - "CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9001 -Dcom.sun.management.jmxremote.rmi.port=9001 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=localhost"
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 4G
        reservations:
          cpus: '1'
          memory: 2G

volumes:
  mydata:
    driver: azure_file
    driver_opts:
      share_name: orscontainersharename
      storage_account_name: orscontainerstorageacc

内容的提问来源于stack exchange,提问作者justanotherdeveloper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 13:35:16