在使用Docker Compose时设置Rails / Rack环境

我有一个docker-compose环境,如下所示:

web: build: . environment: - RAILS_ENV=development - RACK_ENV=development - DOCKERIZED=true env_file: - .env ports: - "3000:3000" volumes: - .:/usr/app links: - redis - db - search - memcache networks: - front-tier - back-tier command: bundle exec rails s -p 3000 -b '0.0.0.0' 

在我的.env文件中,我有以下几点:

 RAILS_ENV=development RACK_ENV=development 

问题是,当我尝试使用种子数据库

 docker-compose run web bundle exec rake db:setup RAILS_ENV=development 

在种子数据库中, 日志中“Rails.env”的输出是“生产” 。 当我跑步

 docker-compose run web env 

它获得以下环境variables:

 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=b6fcc864cf45 TERM=xterm DOCKERIZED=true RACK_ENV=development RAILS_ENV=development 

但是,当我运行以下命令:

 docker-compose run web rails r "print Rails.env" 

我得到:

 > production 

所以有些东西正在导致我的Web容器认为它在生产环境中。 我已经在Web容器的Dockerfile中将RAILS_ENV设置为环境variables,并使用以下命令启动服务器:

 CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0", "-e", "development"] 

这也造成了问题,因为我不能连接到我的redis实例,这是在一个单独的容器,因为Rails正在拿起生产设置和映射到'localhost',而不是'redis'容器。

我们使用Ruby 2.3.1(在RVM下)和Rails 4.2.6。 我们正在使用Docker Compose 1.8.0。

这个设置在一个月前完美运行,所以我们怀疑在这个线上的某个地方有一个小小的变化,让我的生活变得悲惨。

总结一下我的问题:Rails在不正确的环境中起了什么作用? 我已经检查了所有已知的地方。