我正在寻找似乎是某种配置问题的指针。还请指出重复的我找不到的问题。
我几乎完全可以肯定,我对Rails和/或捆绑程序环境的内部运作的无知是应该归咎于...
因此,我有一个相当简单的Rails生产设置,其中包含如下所示的Dockerfile:
FROM ruby
ENV RAILS_ENV production
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev curl ffmpeg mupdf gcc g++ make git imagemagick
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash
RUN apt-get update -qq && apt-get install -y nodejs
RUN bundle config --global frozen 1
RUN npm install -g yarn
WORKDIR /usr/src/app
COPY Gemfile Gemfile.lock ./
RUN bundle install --without development test --path vendor/bundle
COPY . .
EXPOSE 3000
当我用
运行它时$ docker run --rm -ti -e RAILS_MASTER_KEY=$RAILS_MASTER_KEY my-rails-image bash
并尝试打开一个控制台,它抱怨开发和测试小组缺少了一些宝石。老实说,我不知道从哪里开始寻找调试的方法。我可以重写它们以在没有初始化程序的情况下启动Rails,以查看是否存在问题吗?
root@d23a9edca766:/usr/src/app# echo $RAILS_ENV
production
root@d23a9edca766:/usr/src/app# bin/rails c
Could not find abstract_type-0.0.7 in any of the sources
Run `bundle install` to install missing gems.
答案 0 :(得分:0)
在这里找到答案:bundler incorrectly trying to install "development" and "test" group gems in production
简而言之,
COPY . .
行覆盖了.bundle/config
文件,该文件托管了该项目的所有捆绑程序选项:
---
BUNDLE_FROZEN: "true"
BUNDLE_PATH: "vendor/bundle"
BUNDLE_WITHOUT: "development:test"
所以我刚刚将其添加到了.dockerignore
中-现在一切正常。