如何从现有的Flask项目构建docker映像?

时间:2019-09-30 10:33:20

标签: python docker flask pycharm

我在Pycharm上运行了一个flask项目

flask-app\
  app\
     Database.py
     static\
     tempalates\
         home.html
         objects.html
         template.html
     app.py
     requirements.txt
  ven\
  Dockerfile

我想在pycharm中对现有项目进行docker化。我已尝试在Docker-Compose: Getting Flask up and running 中添加新的解释器,但是我没有工作。

我已经创建了docker文件并尝试在容器中运行它,这就是我得到的:

web_1  | Traceback (most recent call last):
web_1  |   File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 240, in locate_app
web_1  |     __import__(module_name)
web_1  |   File "/opt/project/app/app.py", line 4, in <module>
web_1  |     from app import Database
web_1  | ImportError: cannot import name 'Database' from 'app' (/opt/project/app/app.py)

很明显,识别app.py所在的文件夹app出了问题。

这是我的docker文件配置:

FROM python:3
EXPOSE 5000
MAINTAINER Khalil Mebarkia
COPY app /app
WORKDIR /app
RUN pip install -r requirements.txt
CMD python app.py

还有app.py

from flask import Flask, render_template, request
import math
from flask_bootstrap import Bootstrap
from app import Database

db = r'database.db'

app = Flask(__name__)
bootstrap = Bootstrap(app)

if __name__ == "__main__":
    app.run(debug=True, host="0.0.0.0")

@app.route("app/")
def home():
    return render_template("home.html")

1 个答案:

答案 0 :(得分:2)

Pycharm不会创建Dockerfiledocker-compose.yaml文件,这是您的责任。这两个文件在您正在关注的教程中链接:

  1. https://github.com/ErnstHaagsman/flask-compose/blob/master/docker-compose.yml
  2. https://github.com/ErnstHaagsman/flask-compose/blob/master/Dockerfile

这些文件应位于您的项目根目录。 简而言之,Dockerfile描述了您的应用程序的运行时环境(图像),撰写文件告诉docker如何创建和启动该图像。在大多数实际情况下,这两个文件都将被修改以满足您的需求,因此很难自动生成。

然后,您可以按照“配置Pycharm”部分设置远程解释器(Docker)。

结合更多注意事项:

  1. 仅pycharm专业版支持Docker解释器。
  2. 您还必须安装并启动docker,然后自己构建docker。
相关问题