Docker rails mongodb NoServerAvailable

我正在用3dockerbuild设一个项目。

  • API与Rails
  • 网站angular/ webpack
  • DB与MongoDB

所以我有一个docker-compose来处理一切。

我的问题是当我想种子我的数据库,我有一个错误:

 Mongo::Error::NoServerAvailable: No server is available matching preference: #<Mongo::ServerSelector::Primary:0x47121755943460 tag_sets=[] server_selection_timeout=30 local_threshold=0.015> 

我尝试了很多东西,我目前在OSX上使用Docker原生testing版本

 version: '2' services: web: build: web/ ports: - "80:8080" links: - api depends_on: - api volumes: - ./web:/app api: build: api/ command: rails s -p 3000 -b '0.0.0.0' volumes: - ./api:/app - ./api:/app/tmp/pids links: - db #depends_on: #- db ports: - "3000:3000" environment: RAILS_ENV: development db: image: mongo:3.2 ports: - 27017:27017 

我的seeds.rb

 require 'csv' file = File.read("db/data.csv") csv = CSV.parse(file, :headers => false, :col_sep => ";") csv.each do |row| Datum.create( :country_code => row[0], :country => row[1] ) end 

和我的mongoid.yml这是正常的,我使用本地主机,因为与testing版本,它是在本地主机上。 当我试图与docker机,我改变了docker的IP。

 development: clients: default: database: api_development hosts: - localhost:27017 options: options: test: clients: default: database: api_test hosts: - localhost:27017 options: read: mode: :primary max_pool_size: 1 

一旦我的docker-compose up -d我尝试用docker-compose run api rake db:seed

所有的容器运行,我可以从我的导航器没有问题的访问。

当我卸载docker本地和使用boot2docker,它的工作。

有没有人有一个想法,问题是从哪里?

你需要使用

 - db:27017 

mongoid.yml主机configuration中,其中“db”是docker-compose.yml中的mongo服务的名称。