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

Docker部署Open Trip Planner 2遇otp命令路径错误求助

解决OTP2 Docker部署的"otp: executable file not found"错误

问题根源

这个错误的核心是容器内找不到otp可执行命令,大概率是以下原因导致:

  • 自定义的otp入口脚本未添加可执行权限
  • 脚本所在路径未加入容器的$PATH环境变量
  • Dockerfile中未正确配置脚本的复制与权限

针对性修复步骤

1. 给入口脚本加权限并放置到正确路径

先在本地给你的otp脚本添加可执行权限:

chmod +x otp

然后修改Dockerfile,将脚本复制到系统默认的PATH目录,并确保权限生效:

COPY otp /usr/local/bin/
RUN chmod +x /usr/local/bin/otp

/usr/local/bin是容器默认$PATH包含的目录,这样启动时就能直接找到otp命令。

2. 修正Dockerfile的启动配置

Dockerfile末尾直接将otp脚本设为入口:

ENTRYPOINT ["otp"]

如果需要默认参数,可追加一行:

CMD ["--help"]

3. 调整docker-compose.yml的命令参数

Compose文件中的command字段只需传递otp脚本的运行参数,示例:

services:
  otp:
    build: .
    command: ["--build", "/data", "--port", "8080"]
    volumes:
      - ./your-local-data:/data

更简便的OTP2运行方案

无需自定义脚本,直接用Java命令调用OTP2的JAR包,步骤更直观:

简化版Dockerfile

FROM eclipse-temurin:17-jre
WORKDIR /app
# 复制本地的OTP2 shaded JAR包,也可替换为下载命令
COPY otp-2.4.0-shaded.jar ./otp.jar
# 直接以Java命令作为容器入口
ENTRYPOINT ["java", "-jar", "/app/otp.jar"]

构建路网图用的docker-compose.yml

services:
  otp-build:
    build: .
    command: ["--build", "/data", "--save", "/data/graph"]
    volumes:
      - ./gtfs-data:/data
      - ./graph-output:/data/graph

启动服务用的docker-compose.yml

services:
  otp-server:
    build: .
    command: ["--load", "/data/graph", "--port", "8080"]
    ports:
      - "8080:8080"
    volumes:
      - ./graph-output:/data/graph

两个Compose文件共用同一个镜像,分别传递构建和运行的参数,彻底避开自定义脚本的路径问题。

内容的提问来源于stack exchange,提问作者Tristan T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:15:41