Выставить порт на всех интерфейсах используя Webrick

Я новичок в Ruby.

Я работаю со сценарием, который развертывает HTTPServer с помощью WEBrick.

Когда скрипт запускается, он выходит из системы:

check_1  | [2018-12-20 17:51:47] INFO  WEBrick::HTTPServer#start: pid=1 port=4567

Когда я делаю netstat на машине замечаю, что сервис слушает только на 127.0.0.1

$ netstat -tulpn

root@c4a20aa7bd8c:/opt/service# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:4567          0.0.0.0:*               LISTEN      1/ruby1.9.3

Я хочу прослушать все IP-адреса, чтобы я мог общаться с этим сервисом из другого контейнера.

Как или какие конфиги будут нужны?

Мое определение сценария для сервера:

#!/usr/bin/ruby


require 'rubygems'
require 'sinatra'
require 'sinatra/reloader' if development?
also_reload 'config.yml'
require "sinatra/config_file"
require 'mechanize'
require "json"
require 'open-uri'
require 'mongo'
require 'uri'
require 'addressable/uri'
require 'cgi'
include Mongo
require 'nokogiri'

set :server, 'webrick'

2 ответа

Решение

Ответ, который вы ищете, находится в документации по конфигурации Sinatra: http://sinatrarb.com/configuration.html

В частности, :bind вариант. Пример: set :bind, '0.0.0.0'

Параметр:bindв конфигурации, похоже, не работает, если запускается из "рэкапа", в этом случае вместо этого

      bundle exec rackup --host '0.0.0.0'
Другие вопросы по тегам