Я работаю над микросервисом, написанным на python.Мой микросервис отлично работает на моей машине с Windows, и я легко могу это проверить.Тем не менее, на моем контейнере Linux он может работать нормально, но я не могу проверить это.Даже при оптимизации моего кода для доступа к сети, как объяснено здесь .
Так вот мой микросервис:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run(host='0.0.0.0')
- я проверил это, запустив Windows, набрав вкомандная строка:
python.exe app.py
- Я получил сообщение, заканчивающееся на
Работает на http://0.0.0.0:5000/ (нажмите CTRL C, чтобы выйти).
Чтобы проверить свой микросервис, я запустил браузер для доступа: http://localhost:5000/
Я вижу сообщение "Hello World".Так что мое приложение работает отлично.
После этого я начал работать с докером.Вот мой Dockerfile (названный «Dockerfile»).
FROM python
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
RUN pip install Flask
COPY . /app
WORKDIR /app
ENTRYPOINT ["python3"]
CMD ["app.py"]
Вот моя команда сборки:
docker build -t docktoflask .
, которая показывает некоторые результаты, учитывая процесс сборки.
Затем я запустил контейнер с помощью этой команды:
docker run -p 5002:5002 docktoflask
Я получил то же окончательное сообщение, что и в Windows (что примечательно, потому что я указал порт 5002).
После этого япробовал тестировать по этой ссылке: http://localhost:5002/
(конечно, я тоже пробовал http://localhost:5000/)
Безуспешно .... (что означает ошибку браузера вместо Привет, мирсообщение).Ошибка на голландском (мой язык браузера), но означает то же, что и this .
Это раздражает, потому что кажется, что работает, и порт действительно активен.Есть два приложения, к которым я должен иметь доступ из моего браузера (portainer и мое собственное приложение).Я могу получить доступ к Portainer без каких-либо проблем.Как я могу получить доступ к своему микросервису при запуске его в док-контейнере?