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服务的名称。