bin / rails不尊重RAILS_ENV(Rails 5.2)

时间:2019-08-10 09:17:24

标签: ruby-on-rails dockerfile

我正在寻找似乎是某种配置问题的指针。还请指出重复的我找不到的问题。

我几乎完全可以肯定,我对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.

1 个答案:

答案 0 :(得分:0)

在这里找到答案:bundler incorrectly trying to install "development" and "test" group gems in production

简而言之,

COPY . .

Dockerfile中的

行覆盖了.bundle/config文件,该文件托管了该项目的所有捆绑程序选项:

---
BUNDLE_FROZEN: "true"
BUNDLE_PATH: "vendor/bundle"
BUNDLE_WITHOUT: "development:test"

所以我刚刚将其添加到了.dockerignore中-现在一切正常。