加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Docker rails mongodb NoServerAvailable

发布时间:2020-12-17 01:56:34 所属栏目:百科 来源:网络整理
导读:我正在用3个Docker建造一个项目. 带Rails的API 网站角度/网络包 带有mongodb的DB 所以我有一个docker-compose来处理一切. 我的问题是当我想要种子数据库时,我有一个错误: Mongo::Error::NoServerAvailable: No server is available matching preference: #M
我正在用3个Docker建造一个项目.

>带Rails的API
>网站角度/网络包
>带有mongodb的DB

所以我有一个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原生测试版.

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

我的种子.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这是正常的我使用localhost因为测试版本,它在localhost上.当我尝试使用docker-machine时,我将其更改为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运行api rake db:seed

所有容器都在运行,我可以从导航器访问它而没有问题.

当我卸载docker native并使用boot2docker时,它正在工作.

有没有人知道问题出在哪里?

解决方法

你需要使用

- db:27017

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读