【发布时间】:2016-11-12 17:38:22
【问题描述】:
我有一个非常基本的“应用程序”,我正在尝试使用互联网上的一些示例对其进行 dockerize,但由于某种原因,捆绑程序似乎无法看到安装在我的环境中的 gem。
宝石文件
source 'https://rubygems.org'
gem 'streamio-ffmpeg'
Dockerfile
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
【问题讨论】:
-
构建日志在这里是相关的
-
为什么需要cmake?此外,该捆绑容器似乎也没有做任何有益的事情。
bundle install命令看起来也会失败。 -
@user2105103 - 添加日志
-
@MattSchuchard - 我正在使用捆绑服务在主应用程序映像构建之间保留我的宝石。 Cmake 确实有点过时了,我只是从其他容器中复制了它,因为使用的其中一个 gem 需要它,但无论如何,我认为这不是原因。
-
CMake 并没有过时。 CMake 是构建 C++ 的标准软件,这就是为什么我问它为什么包含在 ruby 应用程序中的原因。此外,如果您使用捆绑包安装此 gem,则需要使用
bundle来查找容器内的 gem,而不是gem。
标签: ruby docker bundler docker-compose