Я реализовал небольшое приложение Flask с использованием среды Docker.
Это моя структура проекта :
dockertest
├─ .vscode
│ └─ settings.json
├─ compose_flask
├─ Dockerfile
├─ app.py
├─ docker-compose.yml
└─ requirements.txt
Это Dockerfile :
FROM python:3.8.0
ADD . /code
WORKDIR /code
RUN pip3 install -r requirements.txt
RUN pip3 install Werkzeug==0.16.0
CMD python app.py
Это needs.txt :
flask-restplus
flask
redis
Это docker -компонент .yml:
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
depends_on:
- redis
redis:
image: redis
И наконец мой app.py :
from flask import Flask
from redis import Redis
from flask_restplus import fields, Api, Resource
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
@app.route('/')
def hello():
redis.incr('hits')
print(redis.incr('hits'))
return 'This Compose/Flask demo has been viewed %s time(s).' % redis.get('hits')
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
Сборка с командой: build -t compose-flask:latest .
работает просто отлично! Когда я пытаюсь запустить контейнер с docker-compose up
, появляется следующее сообщение об ошибке:
redis_1 | 1:M 10 Mar 2020 23:10:05.011 * Ready to accept connections
web_1 | Traceback (most recent call last):
web_1 | File "app.py", line 4, in <module>
web_1 | from flask_restplus import fields, Api, Resource
web_1 | ImportError: No module named flask_restplus
compose_flask_web_1 exited with code 1
Похоже, Python не может найти пакет flask -RESTPlus? Консольный вывод сборки сообщает мне, что flask -RESTPlus был успешно установлен. Странно то, что тот же пример без Docker прекрасно работает без каких-либо ошибок импорта !!
Я не могу понять, в чем проблема ... Я был бы рад, если бы кто-то мог помочь!