2017-01-12 2 views
0

Обновление сообщения со всеми файлами, необходимыми для воссоздания установки. - По-прежнему та же проблема. Не удается получить доступ к сервису, запущенному в контейнере.Приложение, работающее в контейнере Docker на порте 4567, не может быть доступно извне

FROM python:3 

RUN apt-get update 
RUN apt-get install -y ruby rubygems 
RUN gem install sinatra 

WORKDIR /app 
ADD . /app/ 

EXPOSE 4567 
CMD ruby hei.rb -p 4567 

hei.rb

require 'sinatra' 

get '/' do 
    'Hello world!' 
end 

докер-compose.yml

version: '2' 

services: 
    web: 
    build: . 
    ports: 
     - "4567:4567" 

Я начал партию, запустив docker-compose up --build . Docker PS возвращается: 0.0.0.0:4567->4567/tcp

Тем не менее, никакой ответ от порта 4567. Тестирование с завитом от главной машины.

$ curl 127.0.0.1:4567 # and 0.0.0.0:4567 

LOCALHOST: 4567 ответов в пределах containter

$ docker-compose exec web curl localhost:4567 
Hello world!%` 

Что я должен сделать, чтобы быть в состоянии получить доступ к приложению Синатры работает на порту 4567?

+0

Нет, ваши порты правильно выставлены и хорошо отображены. Этого должно быть достаточно. Если вы можете распечатать что-то из python exec при попытке завитки, вы должны увидеть его ответ. Какое завивание вы пытаетесь сделать из своего местного? –

+0

У меня была аналогичная проблема. Попробуйте использовать 'wget' вместо' curl' внутри контейнера. –

+0

Выдает ли 'curl -v' больше вывода? Может быть, это проблема прокси/DNS извне? Тогда попробуйте 'curl -v -noproxy 127.0.0.1'. – Ben

ответ

1

Sinatra связывается с неправильным интерфейсом. Исправлено добавлением переключателя -o.

CMD ruby hei.rb -p 4567 -o 0.0.0.0

Смежные вопросы