Запустите скрипт ruby ​​в Docker-контейнере, который подключается к локальному порту mongodb. - PullRequest
0 голосов
/ 04 июня 2018

Я новичок в докере и пробую свои силы на нем.Я столкнулся с незначительной проблемой, ваша помощь в любом случае будет признательна!

У меня есть скрипт ruby, в котором я подключаюсь к своему локальному порту, который назначен моей базе данных mongodb.Я использую MongoClient для подключения к базе данных из сценария:

clientDB = Mongo::Client.new(["localhost:37017"], :database => 'Database', :user => 'user', :password => 'password')

или

clientDB = Mongo::Client.new(["127.0.0.1:37017"], :database => 'Database', :user => 'user', :password => 'password')

Если я запускаю сценарий с помощью команды ruby ​​month_count_script.rb ,он отлично работает, но пока я изучаю Docker, я хочу запустить этот скрипт в контейнере.Поэтому для запуска контейнера я использую следующую команду

docker run -it --rm --name my-running-script -v "$PWD":/usr/src/app -v "$PWD"/../gems:/usr/local/bundle -w /usr/src/app --net=host ruby ruby monthly_count_script.rb

К сожалению, я получаю следующую ошибку, и я не знаю, почему он не может подключиться к порту localhost 37017, даже если моя база данных работаети я могу подключиться к базе данных с помощью консоли Robomongo или mongodb.

Это журнал ошибок:

D, [2018-06-04T14:15:11.527381 #1] DEBUG -- : MONGODB | Topology type 'single' initializing.
D, [2018-06-04T14:15:11.527639 #1] DEBUG -- : MONGODB | Server 127.0.0.1:37017 initializing.
D, [2018-06-04T14:15:11.529252 #1] DEBUG -- : MONGODB | Connection refused - connect(2) for 127.0.0.1:37017
D, [2018-06-04T14:15:11.530774 #1] DEBUG -- : MONGODB | Topology type 'single' initializing.
D, [2018-06-04T14:15:11.531058 #1] DEBUG -- : MONGODB | Server 127.0.0.1:37017 initializing.
D, [2018-06-04T14:15:11.532518 #1] DEBUG -- : MONGODB | Connection refused - connect(2) for 127.0.0.1:37017
D, [2018-06-04T14:15:12.032037 #1] DEBUG -- : MONGODB | Connection refused - connect(2) for 127.0.0.1:37017
D, [2018-06-04T14:15:12.533348 #1] DEBUG -- : MONGODB | Connection refused - connect(2) for 127.0.0.1:37017
D, [2018-06-04T14:15:13.036087 #1] DEBUG -- : MONGODB | Connection refused - connect(2) for 127.0.0.1:37017

С нетерпением ждем вашей помощи / руководства.

К вашему сведению, я следовал этой документации для запуска сценария ruby ​​в Docker: https://docs.docker.com/samples/library/ruby/

1 Ответ

0 голосов
/ 04 июня 2018

Локальные порты недоступны из контейнеров Docker, вы можете подключаться только к портам, открытым в контейнере, или из других контейнеров с помощью --link.

Для подключения к портам хоста вы должны использовать IP дляШлюз докерской сети.

Чтобы получить IP шлюза вашего контейнера, запустите:

docker inspect --format='{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}'

Обычно он возвращает 172.17.0.1 (повторяю, этот ответ действителен только для сетевых конфигураций по умолчанию,при условии, что контейнер подключен к мосту сети)

Затем вы можете обновить конфигурацию клиента mongo:

clientDB = Mongo::Client.new(["172.17.0.1:37017"], :database => 'Database', :user => 'user', :password => 'password')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...