ruby - `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 中的特定内容(那里不存在这种东西)。有没有以这种方式运行容器?
解决方案
如果您可以向图像维护者寻求指导,那是最好的。如果失败,请尝试像@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
只是一个例子。有冲突的版本是行不通的。
推荐阅读
- python - 将 .profo 文件的文件夹编译为多种语言
- reactjs - 如何为组件提供混合元素?
- php - 密钥自动加载是 ./composer.json 第 20 行中的重复项
- css - NextJS - 输出目录中缺少样式化的 jsx
- git - git子模块更新--no-checkout?
- sql - 使用单个查询从 SQL 中的树中递归删除节点
- c# - Visual Studio C# 窗体的设计视图
- typescript - 鉴于这种类型安全的方法接受一个参数,您能否将其推广到 N 个参数同时保持类型安全?
- django - django __class__ 方法不适用于 m2m 关系
- node.js - 如何从命令行运行节点应用程序并返回控制权?