Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Docker Compose时设置Rails/Rack环境_Ruby On Rails_Docker - Fatal编程技术网

Ruby on rails 使用Docker Compose时设置Rails/Rack环境

Ruby on rails 使用Docker Compose时设置Rails/Rack环境,ruby-on-rails,docker,Ruby On Rails,Docker,我有一个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 networ

我有一个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”的输出为“production”。当我跑的时候

docker-compose run web env
它获得以下环境变量:

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容器认为它在生产环境中。我已在Dockerfile中将RAILS_ENV设置为web容器的环境变量,并通过以下方式启动服务器:

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从哪里获得了不正确的环境?我已经检查了所有已知的位置。

您是否正在使用gem为dotenv rails等变量加载
.env
文件?.ENV文件中是否有
RAILS\u ENV