Je suis en train de construire un projet avec 3 dockers.
- API avec Rails
- Site web angular / webpack
- DB avec mongodb
J'ai donc un docker-compose
pour tout gérer.
Mon problème est que lorsque je veux ensemencer ma base de données, j'ai une erreur :
Mongo::Error::NoServerAvailable: No server is available matching preference: #<Mongo::ServerSelector::Primary:0x47121755943460 tag_sets=[] server_selection_timeout=30 local_threshold=0.015>
J'ai essayé de nombreuses choses, j'utilise actuellement le système version bêta de Docker native sur 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
Mon 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
Et mon mongoid.yml C'est normal que j'utilise localhost car avec la version beta, c'est sur localhost. Quand j'ai essayé avec docker-machine, je l'ai changé pour l'ip de docker.
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
Une fois que mon docker-compose up -d
j'essaie de ratisser avec docker-compose run api rake db:seed
Tous les conteneurs fonctionnent, et je peux y accéder depuis mon navigateur sans problème.
Quand je désinstalle docker native et utilise boot2docker, ça marche.
Quelqu'un a-t-il une idée de l'origine du problème ?