代码之家  ›  专栏  ›  技术社区  ›  danielschnoll

在Docker上运行时会产生恐怖

  •  0
  • danielschnoll  · 技术社区  · 3 年前

    我有一个基本的Flask web应用程序,我想在Docker容器中设置它。以下是我的Dockerfile设置:

    FROM python:3.8-alpine
    
    WORKDIR /mydir
    
    COPY requirements.txt requirements.txt
    RUN pip3 install -r requirements.txt
    
    COPY . .
    ENV FLASK_APP="app.py"
    
    CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "-p", "8080"]
    

    使用创建docker文件

    mydir % docker build -t geode:latest .      
    

    但当我试图通过Docker运行web应用程序时,会发生以下情况:

    mydir % docker run -p 8080:8080 geode:latest
     * Serving Flask app 'app.py' (lazy loading)
     * Environment: production
       WARNING: This is a development server. Do not use it in a production deployment.
       Use a production WSGI server instead.
     * Debug mode: off
    Usage: python -m flask run [OPTIONS]
    Try 'python -m flask run --help' for help.
    
    Error: While importing 'app', an ImportError was raised.
    

    但是,我可以在本地运行web应用程序,方法如下

    mydir % python3 -m flask run --host=0.0.0.0 -p 8080
    

    所以我不知道为什么我在通过docker运行时会收到“ImportTerror”,但在我自己运行命令时却不会。

    0 回复  |  直到 3 年前
        1
  •  1
  •   Matteo Pasini    3 年前

    flask可能找不到要从中导入数据的源文件 app 变量,或者称为 应用程序 从中导入变量的源文件中不存在。

    看看这个 link 了解如何启动flaks应用程序。

    如果包含 应用程序 变量与标准不同,则可以设置 FLASK_APP 内部的环境变量 Dockerfile 告诉烧瓶从哪里得到它需要的东西。

    ENV FLASK_APP=<PATH_TO_APP.PY>:<APP_VARIABLE_NAME>
    
        2
  •  0
  •   danielschnoll    3 年前

    我不知道为什么,但重建Docker容器使其能够正常运行。。。也许我在Dockerfile中输入了一个错别字,在我构建容器后我修改了这个错别字?不确定,但我复制了我在另一个应用程序中使用的结构——原来的工作正常,而这个没有。因此,在某个地方出现了一个拼写错误,重新构建容器工作正常。