gpt4 book ai didi

ruby - Bundler无法看到在dockerized环境中安装的gem

转载 作者:行者123 更新时间:2023-12-02 18:16:08 25 4
gpt4 key购买 nike

我有一个非常基本的“应用程序”,我正在尝试使用Internet上的一些示例进行dockerize,但是由于某种原因,看来 bundle 软件无法看到我的环境中安装的gems。

gem 文件

source 'https://rubygems.org'
gem 'streamio-ffmpeg'

Docker文件
FROM dpsxp/ffmpeg-with-ruby:2.2.1
MAINTAINER mike

RUN apt-get update && apt-get install -y \
build-essential \
cmake

ENV APP_HOME=/app

RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME

COPY Gemfile* ./
ENV BUNDLE_GEMFILE=$APP_HOME/Gemfile \
BUNDLE_PATH=/bundle
RUN gem install bundler
RUN bundle install --jobs 20 --retry 5 --path=/bundle

COPY . ./

CMD ["rake"]

docker-compose.yml
version: '2'

services:
app:
build:
context: .
volumes:
- '.:/app'
depends_on:
- bundle

bundle:
image: busybox
volumes:
- /bundle

现在,当我运行 $ docker-compose run app gem list时,出于某种原因, streamio-ffmpeg gem不在列表中。另外,当我试图在我的ruby应用程序中要求它时,我得到了 LoadError: cannot load such file
构建日志: https://gist.github.com/mbajur/569b4f221cadb8a85ecc5dae8a595401

最佳答案

当您通过 bundle 程序处理 gem 时,所有相关命令都应使用bundle exec运行,因此,在您的情况下,它应与以下命令一起使用:

docker-compose run app bundle exec gem list

Bundler通过跟踪和安装所需的确切gem和版本,为Ruby项目提供了一致的环境。

您直接使用 gem list运行的命令是列出系统gem,当然它们不在列表中。

关于ruby - Bundler无法看到在dockerized环境中安装的gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40565738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com