Проблема с сетью / услугами Docker - PullRequest
0 голосов
/ 04 октября 2018

У меня есть файл docker-compose с 3 сервисами, такими как следующие

service:
service1-dev:
(filled with the good config)
network : 
 custom_network
 ipv4_address:167.34.0.5
service2-test:
(filled with the good config)
network : 
 custom_network
 ipv4_address:167.34.0.3
service3-request:
(filled with the good config)
network : 
 custom_network
 ipv4_address:167.34.0.2

networks:
custom_network:
driver: bridge
ipam:
  config:
    - subnet: 167.34.0.0/16

Все работает нормально, и мой service1-dev работает на 0.0.0.0:8081 Когда мой контейнер dev работает, я могу легков браузере он получает следующее: http://localhost:8081/test и я получаю мой json

Проблема в том, что я запускаю мой service3-запрос, который должен отправить некоторый запрос моему service1-dev, но запрос неработает.

Я не понимаю, почему не работает оба моих контейнера находятся в одной сети 167.34.0.0/16 они оба могут пинговать друг друга, но я пытаюсь сделать: curl http://localhost:8081/test ошибка 502

ИЛИ

curl http://167.34.0.5:8081/test ничего не делать

, но это не работает.

Так что я не понимаю, как я могу пропинговать весь свой контейнер, но я не могу получить свой JSON, когда я звоню в мой сервис

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Что ж, все, что нужно сделать, это сбросить мой прокси и использовать имя контейнера в моем запросе curl http://service1-dev:8081/test

Теперь все работает безупречно!

0 голосов
/ 04 октября 2018

У вас есть доступ к какому-либо файлу журнала, чтобы проверить ошибку 502.

Что-то приходит на ум, запустите netstat -tanp | grep LISTEN

Это должно дать вам нечто подобное, где :::* означает, что любой может подключиться к этому порту.

tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      2868/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      3568/master
tcp        0      0 :::42266                    :::*                        LISTEN      2794/rpc.statd
tcp        0      0 :::10080                    :::*                        LISTEN      25226/java

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

Я бы порекомендовал nginx, так как он бесплатный, очень легкий, супер быстрый и очень простой в настройке.https://nginx.org/

Кстати, прочитайте эту тему здесь: Что означает "app.run (host = '0.0.0.0')" в Flask

...