Я довольно новичок в docker и flask. В качестве тестового примера я пытаюсь докернизировать приложение flask, которое возвращает «привет мир» в браузере на MacOS. У меня есть следующие файлы - app.py, needs.txt, Dockerfile. Содержимое сценария и файлы приведены ниже.
app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "hello world!"
if __name__ == '__main__':
app.run(debug=True)
needs.txt
Flask==1.0.3
Dockerfile
FROM python:3.7.2-slim
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir -r requirementx.txt
CMD ["python", "app.py"]
Я следовал стандартной процедуре стыковки приложения flask:
docker build -t flask app:latest .
docker run -d -p 5000:5000 flask app
Основываясь на предыдущей проблеме, о которой сообщалось в StackOverflow, я посмотрел на решение, предоставленное по следующей ссылке: Docker - Не удалось подключиться к локальному порту 4000: соединение отклонено
curl http://$(docker-machine ip default):5000
При этом появилось следующее сообщение об ошибке:
curl: (52) Empty reply from server
Я даже последовал предложению, изменив app.run()
на app.run(host='0.0.0.0')
, поскольку я хочу, чтобы контейнер был доступен извне, как указано в этой ссылке: Развертывание минимального flask приложения в docker - проблемы с подключением к серверу
Я запустил команда: curl -i http://0.0.0.0:5000
, которая также выдает то же сообщение об ошибке -
curl: (52) Empty reply from server
Я даже попытался: curl -H Host:0.0.0.0:5000 -i http://app:5000
, который дал мне следующее сообщение об ошибке:
curl: (6) Could not resolve host: app
Docker было установлен и протестирован со следующим набором ands и все прошло гладко:
$ brew install docker docker-machine
$ brew cask install virtualbox
$ docker-machine create --driver virtualbox default
$ docker-machine env default
$ eval "$(docker-machine env default)"
$ docker run hello-world
Это чрезвычайно простой код. Но я не уверен, почему я сталкиваюсь с этими проблемами здесь. Любая помощь будет принята с благодарностью.