Приложение Docker, работающее по протоколу https и подключающееся к внешнему rethinkdb - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь запустить докер-контейнер, на котором выполняется приложение торнадо в python 3. Он обслуживает несколько вызовов API и записывает данные в службу rethinkdb в системе.RethinkDB не запускается внутри контейнера.Система, на которой он работает, - это Ubuntu 16.04.

Всякий раз, когда я пытался запустить докер с помощью docker-compose, он вылетал, сообщая, что соединение с localhost: 28015 было отклонено.Я изучил проблему и понял, что у docker есть собственная сеть и что внешние соединения должны быть настроены до запуска контейнера.Я использовал эту команду из вопроса, который нашел , чтобы заставить ее работать:

docker run -it --name "$container_name" -d -h "$host_name" -p 9080:9080 -p 1522:1522 "$image_name"

Я изменил имя контейнера, имя хоста, порты и имя образа в соответствии с моим собственным приложением,Теперь докер не падает, но у меня есть две проблемы:

  1. Я не могу связаться с ним из браузера, указав на https://localhost/login
  2. Я потерял docker-composeиспользование.Это проблематично, если мы хотим добавить больше сервисов, которые будут взаимодействовать друг с другом в будущем.

Итак, как мне запустить докер, который может общаться с моей базой данных rethinkdb, не помещая эту БД в контейнер?Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, чтобы ответить на этот вопрос.Я буду признателен за ваше руководство в этом.
Конечным результатом является то, что докер будет обслуживать запросы, поступающие через https.Например, у меня есть конечная точка с именем / getURL.Запрос включает токен, подтвержденный в БД.URL выглядит следующим образом: https://some -domain.com / getURL после проверки с помощью БД он отправит обратно соответствующий ответ.Докер должен иметь возможность общаться на 443, а также на 28015. С сервисом rethinkdb.

(Поскольку 443 и https включают использование сертификатов, я был бы признателен за решение, которое обрабатывает это на обычном http с некоторымиСлучайный порт тоже, и я возьму его оттуда)
Спасибо!

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

1 Ответ

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

Я нашел решение.Мне нужно было добавить это, чтобы контейнер мог подключаться как к базе данных, так и к rethinkdb:

--network="host"

Поскольку это решение работает для меня сейчас, но это не лучшее решение, я не будупометьте это как ответ на данный момент.

...