У меня есть приложение фляги, которое запускает несколько вещей в зависимости от звонка пользователя.В этом приложении у меня также есть одна базовая конечная точка, которая просто возвращает строку, которая поможет мне увидеть, работает приложение или нет.
@app.route("/hello")
def hello():
return "Hello World!"
Теперь я попытался докеризовать это приложение, используя this учебник с официального сайта докера.Приложение фляги прослушивает порт 5000, поэтому я добавил запись в свой Dockerfile, чтобы открыть порт 5000.
EXPOSE 5000
И команда, которую я использую в Dockerfile для запуска приложения, -
CMD ["python","model.py"]
Файл model.py содержит код колбы, который вызывает другие функции на основе ввода пользователя.
Теперь, когда я запускаю свое приложение после его контейнера, я вижу требуемый вывод на терминале, что приложение колбы действительно работает.Это команда, которую я использовал для запуска приложения.
docker run -p 5000:5000 firstContainer
Когда я пытаюсь вызвать базовый метод helloWorld, описанный выше, используя запрос http://localhost:5000/hello,, я получаю сообщение об ошибке, сообщающее, что сайтнедоступен.Есть ли что-то, что я делаю неправильно с отображением портов здесь?Как мне исправить эту проблему?
РЕДАКТИРОВАТЬ: Добавление более подробной информации
Поэтому я попытался зайти в контейнер, чтобы увидеть, что происходит, и я смог просмотреть файлы, которые были доступны в контейнереи они выглядят хорошо.Когда я попытался снова запустить приложение в контейнере с помощью базовой команды
python model.py
, он вернул ошибку, сообщающую, что порт уже используется.Так что это должно означать, что приложение действительно прослушивает порт.Я также установил curl внутри контейнера, чтобы просмотреть URL, и он вернул ожидаемую строку, когда я запустил ее внутри контейнера.Я просто не понимаю, как я могу открыть его для внешнего мира
РЕДАКТИРОВАТЬ 2:
Журналы контейнеров
* Serving Flask app "model" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: on