2016-05-27 21 views
4

我正在用3 docker構建一個項目。Docker rails mongodb NoServerAvailable

  • API使用Rails
  • 網站角/的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

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這是正常的我本地主機使用,因爲與測試版,它是在本地主機上。當我嘗試使用碼頭機時,我將其更改爲碼頭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 native並使用boot2docker時,它正在工作。

有沒有人有一個想法,問題是從哪裏?

回答

0

您需要在mongoid.yml的你的主機配置,其中「DB」是docker-compose.yml您蒙戈服務的名稱使用

- db:27017 

+0

謝謝,也許我現在沒有在這個項目上工作,但我記得錯誤來自'碼頭OSX Beta'而不是使用'docker-machine' –

+0

我還注意到你應該使用mongo uri 'uri:mongodb:// db:27017'而不是通過主機和用戶參數連接,否則Mongoid將無法進行身份驗證。 –