Мое базовое flask приложение работало при выставлении поста: 8100 в данном случае. Я добавил базу данных в новый контейнер, но мне сказали, что мне нужно, чтобы они были вместе в пользовательской сети.
docker network create my-network
Поэтому вместо того, чтобы запустить оба контейнера, я добавил их на my-network в командной строке,
docker run -d -p 8100:5000 --name flaskapp --network my-network flaskapp:latest
docker run -d -p 5432:5432 --name postgresdb --network my-network postgres:latest
Но теперь я заметил, что хотя я все еще могу получить доступ к 8100 локально с помощью скручивания:
curl 0.0.0.0:8100
Который возвращает «Hello World»
Он недоступен для других компьютеров в сети хоста.
Мой маршрутизатор имеет переадресацию портов на мою ма c на 8100, поэтому он будет принимать входящие запросы и трубить их соответственно. Проблема заключается в том, что ничто другое в сети, или, по-видимому, мой маршрутизатор не может получить к нему доступ.
Как правильно выставить это в моей сети? Для теста я отключил брандмауэр, думая, что это проблема. Я не уверен, есть ли команда, которую я могу использовать в моей команде запуска, чтобы она добавляла ее на свой хост-компьютер.
Как мне преодолеть это? Я полагаю, я могу кое-что сделать. Когда я смотрел на правила выставления портов, я увидел: -p 192.168.10.1:5555:80
, например, но я не хотел писать мои ma c в команде run, и предполагал, что есть что-то, что я могу написать, который автоматически назначил его .
Редактировать То, как работает некоторая часть вербуса, заключается в том, что если вы не настроите сеть или не настроите ее на хост, она будет доступна хосту. НО, потому что я добавляю эту вторичную сеть, это добавляет некоторые сложности. Он намекал на то, что я мог бы просто применить эту вторую сеть ПОСЛЕ первого запуска, которая, вероятно, сработает. Однако приложение не будет работать, если я не добавлю соединение, потому что оно не сможет подключиться к postgres db.
Может быть, я разработал это неправильно? Должен ли я делать что-то еще, чтобы связать контейнер 1 с контейнером 2 через порт 5432? У меня сложилось впечатление, что мне нужно сделать это с помощью такой частной сети, но, может быть, есть способ, которым я мог бы сделать это по-другому?