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

Dokku+Herokuish部署失败:exec launcher缺失原因及解决方法

问题分析与解决

为什么会缺失launcher二进制文件?

gliderlabs/herokuish:latest-24是基于Ubuntu 24.04的构建镜像,和旧版本(比如基于Ubuntu 20.04的latest-20)相比,构建包的目录结构或launcher的安装逻辑有变更。而你的Dokku v0.35.18版本发布于2024年早期,尚未完全适配Ubuntu 24.04版本的herokuish镜像,导致构建过程中launcher没有被正确注入到最终的应用镜像中。

另外,部署缓存也可能是诱因:如果之前用旧版本herokuish构建过应用,缓存的构建层可能和新版本herokuish的逻辑冲突,导致launcher文件丢失。

解决方法

方法1:降级herokuish镜像到兼容版本

指定使用基于Ubuntu 20.04的herokuish镜像,这个版本和Dokku v0.35.18兼容性更好:

  1. 设置应用的herokuish镜像版本:
    dokku config:set my-app HEROKUISH_IMAGE=gliderlabs/herokuish:latest-20
    
  2. 清除构建缓存并重新部署:
    dokku repo:purge-cache my-app
    git push dokku main
    

方法2:手动指定容器入口点(临时 workaround)

如果需要继续使用latest-24镜像,可以绕过launcher,直接设置应用的启动命令为入口点:

  1. 覆盖容器的入口点和命令:
    dokku docker-options:add my-app deploy "--entrypoint='bundle'"
    dokku docker-options:add my-app deploy "exec puma -C config/puma.rb"
    
  2. 重启应用:
    dokku ps:restart my-app
    

注意:这个方法只是临时解决,可能会绕过herokuish的环境初始化逻辑,建议优先用方法1。

方法3:升级Dokku到兼容版本

Dokku的新版本(比如v0.36+)已经适配了Ubuntu 24.04的herokuish镜像,可以考虑升级Dokku:

  1. 备份应用数据(重要):
    dokku backup:create my-app
    
  2. 升级Dokku:
    curl https://raw.githubusercontent.com/dokku/dokku/v0.36.x/bootstrap.sh | sudo DOKKU_TAG=v0.36.0 bash
    
  3. 重新部署应用:
    dokku repo:purge-cache my-app
    git push dokku main
    

方法4:检查并重置构建配置

如果应用有自定义的构建脚本或Procfile,确认没有覆盖herokuish的默认逻辑:

  1. 查看当前的启动命令配置:
    dokku ps:inspect my-app
    
  2. 重置启动命令为默认值:
    dokku config:unset my-app DOKKU_PROXY_PORT_MAP
    dokku config:unset my-app DOKKU_APP_COMMAND
    
  3. 清除缓存后重新部署。

内容的提问来源于stack exchange,提问作者Tomáš Landovský

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:32:35