Docker 容器知道 rbenv 全局但不知道 ruby

2024-03-01

当运行我的 docker 容器时,它知道 rbenv 全局。但是当它尝试通过以下方式找到红宝石时ruby or which ruby or whereis ruby我什么也没得到。它也认不出rails-api or gem。到底是怎么回事?

Dockerfile

FROM centos:6.6

RUN yum update -y
RUN yum install git openssl-devel openssh-server sudo openssl readline-devel readline zlib-devel zlib libxml2-devel libxml2 libxslt-devel libxslt nginx tar gcc libaio libaio-devel -y
RUN rpm -Uvh https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-12.5.1-1.el6.x86_64.rpm
RUN sed -i -e "s/Defaults    requiretty.*/ #Defaults    requiretty/g" /etc/sudoers

RUN mkdir -p /var/run/sshd

RUN useradd -m -u 1000 -G wheel deploy && echo '%wheel  ALL=(ALL)  NOPASSWD: ALL' >> /etc/sudoers.d/wheel
USER deploy
RUN mkdir ~/dev

RUN git clone https://github.com/sstephenson/rbenv.git ~/.rbenv/
RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

ENV PATH ~/.rbenv/bin:$PATH
RUN echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
RUN source ~/.bash_profile
ENV CONFIGURE_OPTS --disable-install-doc

RUN rbenv install 2.2.3
RUN rbenv global 2.2.3
RUN bash -l -c 'gem update --system'
RUN bash -l -c 'gem update'
RUN bash -l -c 'gem install nokogiri -- --use-system-libraries'
RUN bash -l -c 'gem install bundler rails-api --no-rdoc --no-ri'

COPY oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm /tmp/oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
COPY oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm /tmp/oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
COPY oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm /tmp/oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

RUN sudo rpm -Uvh /tmp/oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
RUN sudo rpm -Uvh /tmp/oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
RUN sudo rpm -Uvh /tmp/oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

RUN sudo touch /etc/sysconfig/network

RUN NLS_LANG=American_America.UTF8
ENV ORACLE_HOME=/usr/lib/oracle/12.1/client64
ENV LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib

EXPOSE 22
EXPOSE 3000
EXPOSE 5000

这里面临的问题是每个RUN中的声明Dockerfile发生在它自己的环境中。这RUN source ~/.bash_profile将设置$PATH具有/root/.rbenv/shims在里面。但随后RUN不会设置此环境,因为他们不会来源.bash_profile因为这不是一个交互式 shell。

解决这个问题的简单方法是添加一个ENV PATH $HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH之前的某处ruby and gem命令。这实际上是您应该从rbenv初始化 shell 脚本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 容器知道 rbenv 全局但不知道 ruby 的相关文章

  • 如何使用 Compose 创建具有用户定义的 IP 和 MAC 地址的 Docker macvlan

    我有一个使用 MAC 地址执行硬件许可证的 Docker 项目 我无法更改此设置 ISV 使用包含 MAC 地址的硬件指纹 我正在尝试创建一个 macvlan 网络 它将使用物理适配器并从我的网络 DHCP 服务器获取 IP 地址 或者我将
  • Rails 控制台无法运行

    rbenv 红宝石版本 2 6 6 导轨版本 5 1 4 我正在较旧的代码库中工作 ruby 2 6 6 rails 5 4 1 这是我每天使用的代码库 我必须通过 rbenv 下载一个新的 ruby 版本作为单独的存储库 这样做在我的旧代
  • 如何使用本地安装的gems执行Ruby程序?

    我已经使用安装了我的依赖项 bundle package 然后将它们传输到离线服务器并运行 gt bundle install local Using mime types 1 19 Using rest client 1 6 7 Usin
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • 多重要求和允许强参数rails 4

    在下面的情况下 我尝试使用强参数 我想要求email address password并允许remember me fields 但像下面这样使用它只允许最后一行在方法示例中 在下面的情况下 它只需要params permit rememb
  • /var/lib/docker/中docker目录结构的作用

    当我启动一个新的 docker 守护进程时 docker 目录如下 var lib docker aufs diff layers mnt containers graph init dockerinit 0 7 3 linkgraph d
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • “rmagick”gem 安装问题

    我在尝试在 centos 上安装 rmagick gem 时遇到问题 以下是我得到的输出 谁能帮我识别一下我缺少什么包裹 我已经安装了所有提到的另一个堆栈溢出线程 RMagick安装错误 https stackoverflow com qu
  • rvm gem 安装错误?

    我正在摆弄 ruby gems 和 rvm 它工作得很好 但现在当我尝试安装 gem 时出现错误 gem install Rails错误 同时 执行 gem Errno EACCES 权限被拒绝 Users da rvm gems ruby
  • 在 docker 中根据更改重新启动 Flask 应用程序

    我正在使用 Flask script 来运行我的应用程序 if name main manager run 在 docker 中我有以下内容 CMD python manage py runserver h 0 0 0 0 p 5000 现
  • Logrotate - nginx 日志不在 docker 容器内旋转

    我有一个运行 nginx 的 docker 容器 它正在将日志写入 var log nginxLogrotate 安装在 docker 容器中 并且 nginx 的 logrotate 配置文件已正确设置 尽管如此 logrotate 仍不
  • 红宝石接球和效率

    catch在 Ruby 中意味着跳出深度嵌套的代码 在 Java 中 例如用Java也可以达到同样的效果try catch用于处理异常 但它被认为是糟糕的解决方案 而且效率非常低 在 Ruby 中 我们有处理异常的方法begin raise
  • Docker 绑定安装卷不会传播由角度“ngserve”执行监视的更改事件

    请按照下列步骤操作 定义 Dockerfile FROM node alpine RUN yarn global add angular cli RUN yarn global add node sass RUN mkdir volumes
  • 如何使用 net/http 验证 ruby​​ 中的 SSL 证书链

    我如何验证网站的证书 例如https processing ukash com https processing ukash com 在 ruby 中使用 net http https Net HTTP new processing uka
  • docker 容器无法启动,因为现有的 pid 文件

    当我启动 docker 容器时 它会失败 因为现有的 pid 文件 root newhope sergio docker logs sharp shockley httpd pid 1 already running httpd pid 1
  • Rails/Ruby 合并两个具有相同键、不同值的哈希值

    我有两个想要合并的哈希值 它们看起来像这样 Hello gt 3 Hi gt 43 Hola gt 43 第二个哈希看起来像 Hello gt 4 Hi gt 2 Bonjour gt 2 我想合并这两个哈希数组 使结果看起来像 Hello
  • 无法连接到 macOS 上的 Docker 守护进程

    我通常更喜欢使用brew 来管理我的OSX 上的应用程序 我能够安装 docker docker compose 和 docker machine docker version Docker version 17 05 0 ce build
  • 容器中的 JVM 计算处理器错误?

    最近我又做了一些研究 偶然发现了这一点 在向 OpenJDK 团队抱怨之前 我想看看是否有其他人观察到这一点 或者不同意我的结论 因此 众所周知 JVM 长期以来忽略了应用于 cgroup 的内存限制 众所周知 现在从 Java 8 更新某
  • 适用于elasticsearch 7.0.1 和 kibana 7.0.1 的 docker-compose.yml

    我在 Windows 10 上将 Docker Desktop 与 Linux 容器结合使用 并希望通过 docker compose 文件启动最新版本的 elasticsearch 和 kibana 容器 使用 6 2 4 等旧版本时一切
  • 在 Sinatra 中运行后台进程

    我有 Sinatra Rails 应用程序和一个启动一些漫长过程的操作 通常我会为后台作业排队 但这种情况太简单了 后台进程很少启动 所以队列是一个开销 那么如何在没有队列的情况下运行后台进程呢 get build logs project

随机推荐

  • 在 Docker 中使用 RabbitMQ 删除容器

    我尝试使用RabbitMQ启动Docker容器 结果下载了镜像 但容器没有启动 我在日志中收到以下消息 error RABBITMQ DEFAULT PASS is set but deprecated error RABBITMQ DEF
  • 如何将变量传递给“data-target=”角度2

    我正在使用 Angular 2 Typescript 我想创建一个切换折叠列表 这很简单 只需一个 id 即可data target但我循环遍历一个列表 所以我有动态 ID 名称 我想在我的中传递一个变量data target这样我就可以获
  • 如何在 AvalonEdit 中使文本居中?

    我正在使用 ICSharpCode 的 AvalonEdit 文本编辑器 并且有一个自定义 DocumentColorizingTransformer 我想将 ColorizeLine 内的某些文本行居中 这可能吗 我已经能够弄清楚如何以我
  • 创建 deps.edn 文件时出现问题

    大家 我决定完全重写这篇文章 以清晰的方式展示它 首先感谢大家的支持 我很感激 这是 The Clojure Workshop Packt 中的练习 我陷入了困境 我的 IDE 是 IntelliJ 我使用的是 Windows 练习 4 1
  • 正确的 chromium 浏览器品牌?

    我正在研究 Chromium 叉子 如何替换 Chromium 资源和应用程序包 资源 我发现有一天android branding res dirsgn 参数是介绍 https chromium googlesource com chro
  • 没有窗口对象存在 webpack nodejs

    我使用 webpack 和 babel 来编译我的 ecmascript 6 代码 一切正常 但如果我添加某些依赖项 例如 requests npm 包 这是我的文件 main js import os from os export cla
  • 在 Info.plist 中指定设备系列

    有没有一种方法可以仅根据 Info plist 中的键来指定设备系列 而不更改构建设置 我读过有关 UIDeviceFamily 在构建时自动添加到 Info plist 的信息 并且文档说我不应该手动添加此键 假设我无法使用 Xcode
  • Makefile 中 TARGET_ARCH 变量的用途是什么

    我注意到 Gnu Make 中的隐式规则是变量 TARGET ARCH 例如 LINK o LOADLIBES LDLIBS o LINK o CC LDFLAGS TARGET ARCH 我认为交叉编译需要这个变量 但我在 Gnu Mak
  • 使用带有绝对链接的 dompdf

    我正在使用标准 DOMPDF 代码来呈现现有网页 例如1 http jasss soc surrey ac uk 16 2 1 html dompdf new DOMPDF dompdf gt set base path artpath d
  • 将外部 CSS 转换为 Rails 中邮件的内联 CSS

    我正在尝试创建一个应用程序 该应用程序将发送样式繁重的电子邮件 并要求客户端工作 Google Gmail 除外 我研究了这个问题 看起来 Gmail 删除了外部文件中的 CSS 或嵌套在 style 标签中的 CSS 是否存在将样式从外部
  • 如何找出哪个 USB-RS232 设备位于哪个 tty 上?

    我有两个基于相同 USB RS232 芯片的不同 USB 设备 当我将它们插入 USB 时 它们会安装到 dev ttyUSB0 3 我的问题是 在脚本中 我如何找出哪个脚本位于哪个 tty 上 使用 lsusb 我可以区分它们 gt ls
  • Dart JS库,如何传递回调函数

    我们正在尝试使用 Dart 包装器来包装 D3 v4 行生成器类https pub dartlang org packages js https pub dartlang org packages js 我们已经关注了https githu
  • 如何在powershell中对xml文件使用if语句以及如何删除子标签及其内容

    如何使用 if 语句并从该语句的输出中删除子标签 xml 文件中的 if 语句从我的代码中解析了所有 xml 文件 现在我想检查 sessionType 是否等于我的 name 输入然后删除 int 标记之间的数据 在不真正知道 XML 文
  • log4j2 是否有一个适配器可以在 slf4j 上工作?

    我有一个使用 log4j2 的第三方库 elasticsearch 5 x 我的应用程序使用 slf4j 是否有适用于 log4j 版本 2 的适配器 类似于版本 1 适配器 log4j over slf4j 只是为了澄清 我不想实际使用
  • PHP反序列化没有匹配类的对象

    我有包含序列化对象的数据库行 我想反序列化这些 但类已更改 某些属性变为私有 因此反序列化不再起作用 有没有办法强制反序列化到数组或 stdClass 或任何在反序列化时不会导致错误的内容 我想避免使用脚本迁移数据 我宁愿向后兼容以旧格式序
  • Angular Dart 形式中的细粒度错误消息

    我有以下表格和一些简单的验证规则
  • GetExportedTypes 抛出 MissingMethodException

    当我调用 GetExportedTypes 时 抛出 MissingMethodException 代码 Assembly LoadFrom assemblyPath GetExportedTypes 例外 名称被混淆 System Mis
  • 是否可以引用解决方案中存在的项目,并使用 NuGet 包引用作为后备(如果不在 .NET Core 中)?

    我有一个 NET Standard 项目 在其中实现了 ASP NET Core CMS 框架的模块 目前 它使用来自 NuGet 包的 CMS 框架库 如果我从 GitHub 获取 CMS 框架的源代码 并将我的模块添加到其解决方案中 并
  • font Awesome 图标未出现在 IE 11 中,但显示在其他浏览器中

    我对字体很棒的图标很陌生 我有一个页面 其中有一个过滤器 用户可以在其中搜索数据 我在搜索链接之前添加了 font Awesome 图标 如下图所示 我可以在除 IE 11 之外的所有浏览器中看到这个图标 有趣的是我在其他页面中也有这个图标
  • Docker 容器知道 rbenv 全局但不知道 ruby

    当运行我的 docker 容器时 它知道 rbenv 全局 但是当它尝试通过以下方式找到红宝石时ruby or which ruby or whereis ruby我什么也没得到 它也认不出rails api or gem 到底是怎么回事