2017-02-08 1 views
0

mongo provisioning에 문제가 있습니다. 내가 조항을 처음 수행 할 때, 그것은 나에게 오류 줄 것이다 어떤 이유 Vagrant MongoDB 제공 연결이 거부되었습니다.

:

==> METEOR_Dev_Box_test: ADDING MONGO INITIATE 
==> METEOR_Dev_Box_test: MongoDB shell version v3.4.2 
==> METEOR_Dev_Box_test: connecting to: 127.0.0.1:27017 
==> METEOR_Dev_Box_test: W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused 
==> METEOR_Dev_Box_test: E QUERY [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed : 

을하지만 난 vagrant ssh

을하고 실행하는 경우 :

mongo 127.0.0.1:27017 --eval "db=db.getSiblingDB('local');rs.initiate()" 

그것은 작동 아주.

sudo service mongod stop 
sudo sed -i '/#replication:/a replication:\n \ \ replSetName: rs0' /etc/mongod.conf 
sudo sed -i '/#replication:/d' /etc/mongod.conf 

sudo service mongod restart 

mongo 127.0.0.1:27017 --eval "db=db.getSiblingDB('local');rs.initiate()" 

Vagrantfile :

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

require 'yaml' 
settings = YAML.load_file('./vagrant_setup.yml') 

VAGRANTFILE_API_VERSION = '2' 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    settings.each do |settings| 
     config.vm.define settings['name'] do |machine| 
      machine.vm.box = settings['box'] 
      machine.vm.network "private_network", ip: settings['ip'] 
      machine.vm.hostname = settings['hostname'] 
      machine.vm.provision :shell, path: './vagrant_bootstrap.sh' 
      machine.vm.provision :shell, path: './vagrant_meteor.sh', privileged: false 
      machine.vm.network 'forwarded_port', guest: settings['port_1'], host: settings['port_1'] 
      machine.vm.network 'forwarded_port', guest: settings['port_2'], host: settings['port_2'] 
      machine.vm.network 'forwarded_port', guest: settings['port_3'], host: settings['port_3'] 
      machine.vm.provider :virtualbox do |vb| 
       vb.name = settings['name'] 
       vb.memory = settings['memory'] 
       vb.cpus = settings['cpus'] 
       vb.customize ["modifyvm", :id, "--usb", "on"] 
       vb.customize ["usbfilter", "add", "0", "--target", :id, "--name", "android", "--vendorid", "0x18d1"] 
       vb.customize ["usbfilter", "add", "0", "--target", :id, "--name", "androidSamsung", "--vendorid", "0x04e8"] 
       vb.customize ["usbfilter", "add", "0", "--target", :id, "--name", "androidLG", "--vendorid", "0x1004"] 
      end 
     end 
    end 
end 

그것은 그 조항에, 그는 127.0.0.1를 연결하는 동안 같은 도달 할 수없는 느낌

이 내 규정의 관련 부분이다.

미리 감사드립니다. :)

+0

어떻게 프로비저닝을 구성 했습니까? Vagrantfile –

+0

안녕 친구를 추가하고 질문에 Vagrantfile을 추가 할 수 있습니까? 또한, 내가 주목 한 조항에 대한 2 줄을 제거하지 않았습니다. –

+1

어쩌면 mongo가 시작하는 데 약간의 시간이 필요하고 명령이 시작된 직후 실행이 작동하지 않습니다. 5/10 초의 대기 시간을 추가하여 mongo가 실행되고 있는지 확인하십시오. –

답변

0

@ 프레데릭 앙리 감사합니다. 너는 옳았다! 몽고 (mongodb)가 완전히 초기화되기까지는 어느 정도 시간이 걸립니다.

sleep 5s을 사용하여 계속 될 때까지 기다렸습니다. > ...이 주변 이일

sudo service mongod stop 
sudo sed -i '/#replication:/a replication:\n \ \ replSetName: rs0' /etc/mongod.conf 
sudo sed -i '/#replication:/d' /etc/mongod.conf 

sudo service mongod start 

sleep 5s 

mongo 127.0.0.1:27017 --eval "db=db.getSiblingDB('local');rs.initiate()" 

을 그리고 완벽하게 작동합니다 :

How do I pause my shell script for 1 second before continuing?

그래서 내 코드는 이제 다음과 같습니다. <