首页 > 解决方案 > `bundle` 不在 Docker 路径中

问题描述

我有一个 Docker 映像(按原样交付,没有 Dockerfile 等),其中包含 Ruby 应用程序,当我尝试运行 docker 容器时,docker run application_image bundle exec puma -C config/puma.rb我得到了starting container process caused "exec: \"bundle\": executable file not found in $PATH": unknown.. 所有建议的修复都是针对 Dockerfile 中的特定内容(那里不存在这种东西)。有没有以这种方式运行容器?

标签: rubydockerbundle

解决方案


如果您可以向图像维护者寻求指导,那是最好的。如果失败,请尝试像@hmm 建议的那样先探索 docker 映像,请参阅:https ://stackoverflow.com/a/58256085/5641227 了解如何做到这一点。

然后,如果您被允许提取图像内容并从头开始自己构建它。

或者尝试从您拥有的镜像构建一个新镜像,并将新的构建步骤添加到新的 Dockerfile:

FROM <your-current-image:and-tag>

RUN gem install bundler -v "~>2.0.2" --no-document --quiet --force

CMD ["bundle", "exec", "puma -C config/puma.rb"]

然后在标记并构建新图像后运行它:

docker run new_application_image

此外,您需要拥有正确版本的捆绑程序。2.0.2只是一个例子。有冲突的版本是行不通的。


推荐阅读