2016-01-21 3 views
2

Постановка задачи

Я бегу API Настой на основе в контейнере Докер, который подвергается воздействию на порт 5000, однако никаких запросов даже получение к API.Docker Разоблачение порты для Колба API

Для воспроизведения

  1. Get jupyter/все-искровым ноутбук докер изображения
  2. Внутри контейнера Докер, получить любую Настой на основе API, для целей воспроизводимости попробовать https://github.com/miguelgrinberg/oreilly-flask-apis-video (для понимания очень простой API на основе Python для версии v0.1 в версиях)
  3. Запустите Docker, используя стандартную команду, как описано здесь (https://github.com/jupyter/docker-stacks/tree/master/all-spark-notebook). Забудьте о части ноутбука и используйте только -p 5000:5000, чтобы получить предпочтительный порт API для запуска. Не используйте HTTPS, но установите ssh на контейнер. (Таким образом, если вы используете пользовательские Dockerfile как я, вам не нужно будет активировать Судо)
  4. Попробуйте сделать любой запрос к API (например, http GET http://localhost:5000/customers/1) ->это не удается и получает различные сообщения об ошибках в зависимости
    • ли это Python based urlib request (IOError: ('http protocol error', 0, 'got a bad status line', None))
    • или HTTPie основы (http: error: ConnectionError: HTTPConnectionPool(host='localhost', port=5000): Max retries exceeded with url: /filterReplies/aaaaa/aaaa (Caused by <class 'http.client.RemoteDisconnected'>: Remote end closed connection without response))
  5. Проверьте журналы, где нет записи любого запроса API

Примечания
  • Я бегу на Linux машине, нет VM необходимо.
  • Существует разница в создании wget http://localhost:5000 (получает Connecting to localhost (localhost)|127.0.0.1|:5000... connected. HTTP request sent, awaiting response... No data received. Retrying.) и wget http://localhost:1234 (получает Resolving localhost (localhost)... 127.0.0.1 Connecting to localhost (localhost)|127.0.0.1|:8888... failed: Connection refused.), так что порт открыт на каком-то уровне, но только не там, кажется, что-то ждет на другой стороне?
  • Оригинальная цель изображения все еще работает - т. Е. если я укажу как портов, подлежащих пересылке, я все же могу иметь доступ к браузеру Jupyter на базе браузера в контейнере докера. Так некоторые порт пересылки на этой машине работает.
+2

Можете ли вы связать свое приложение в 0.0.0.0 вместо localhost? Хотя я не уверен. – ipinak

+0

Просто для того, чтобы быть очень конкретным: я выполнил ту же команду, за исключением теперь с '-p 0.0.0.0: 5000: 5000' вместо обычного' -p 5000: 5000', добавляющего IP до второго производителя числа ошибок 'sr/data custom-docker python3/home/jovyan/work/flask_api/run.py docker: Неверный IP-адрес: 5000. '__Но так же, как я пишу это, я понимаю, что это не то, что вы имели в виду .__ Будет модифицировать API. –

ответ

2

Связывание с 0.0.0.0 свяжет ваше приложение в любом доступном интерфейсе, localhost этого не делает. Существует одно сообщение, которое описывает разницу между localhost и 0.0.0.0, если я найду, я обновлю это сообщение.

1

Все кредиты отправлены ipinak, которые предложили привязать приложение к 0.0.0.0, что действительно решило проблему.

Интересно, что приложение все еще отвечает на localhost. Но я возьму это сейчас.

+0

Рад помочь ... – ipinak

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