我有一个非常基本的“应用程序”,我正在尝试使用互联网上的一些示例进行停靠,但由于某种原因,似乎捆绑商无法在我的环境中看到安装的宝石。
source 'https://rubygems.org'
gem 'streamio-ffmpeg'
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"]
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
答案 0 :(得分:2)
当您通过bundler处理gem时,所有相关命令都应该使用bundle exec
运行,因此在您的情况下,它应该使用以下命令:
docker-compose run app bundle exec gem list
Bundler通过跟踪和安装所需的确切gem和版本,为Ruby项目提供了一致的环境。
您直接使用gem list
运行的命令是列出系统宝石,当然它们不在列表中。