Я новичок в Docker, поэтому думаю, что в моей настройке что-то не так.
Вот мой app.py
(сокращенная версия):
import flask
from flask import request
from flask_cors import CORS, cross_origin
app = flask.Flask(__name__)
cors = CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'
@app.route('/', methods=['GET'])
@cross_origin()
def index():
return('Home')
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
Мой Dockerfile
:
FROM python:3
WORKDIR /app
ENV FLASK_APP=app.py
COPY ./requirements.txt .
RUN pip3 install -r requirements.txt
COPY . .
CMD ["python3", "app.py"]
Я создаю образ с помощью docker build -t flaskapi .
и запускаю с
docker run --rm -it -p 80:5000 flaskapi
, который дает следующий вывод:
* Serving Flask app "app" (lazy loading)
* Environment: development
* Debug mode: on
* Running on all addresses.
WARNING: This is a development server. Do not use it in a production deployment.
* Running on http://172.17.0.2:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
Посещение localhost
в браузере, все работает нормально, но при попытке посетить http://172.17.0.2:5000/
или тестировании с помощью Postman я в конечном итоге получаю ошибку тайм-аута. Я чувствую, что это просто небольшая ошибка, которую я где-то сделал, но я не могу ее увидеть. Что я могу сделать, чтобы это исправить?
Понятно, похоже, я неправильно понял, как работает Docker. Так что на самом деле, если я могу нормально посетить
http://localhost
, то все работает, как задумано. И затем, чтобы на самом деле где-то разместить указанный контейнер, мне пришлось бы использовать что-то вроде Heroku?