python - Docker-compose无法找到Flask配置文件

标签 python docker flask docker-compose

我关注了this blog post from Pycharm并尝试将我的Flask应用程序进行泊坞化。我的应用程序可以在本地venv上正常运行。但是当我在终端中使用docker-compose up时。我收到此错误:

FileNotFoundError: [Errno 2] Unable to load configuration file (No such file or directory): '/CarrotApp/project/instance/flask.cfg'



Screenshot

我从博客文章中复制了与docker相关的文件,仅做了最小的更改:

Dockerfile:
FROM python:3.6

EXPOSE 5000

RUN mkdir /app
WORKDIR /app

COPY requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt

COPY . /app

CMD python run.py

docker-compose.yml
version: '2'
services:
  web:
    build: .
    ports:
    - "5000:5000"

docker-compose.dev.yml
version: '2'

services:
  web:
    volumes:
      - .:/app

我的应用程序结构:

  • project
    • /app (created by Dockerfile)
    • /instance
      • flask.cfg
    • /venv
    • __init__.py
  • run.py
  • requirements.txt
  • Dockerfile and yml files

run.py:
from project import app

if __name__ == "__main__":
    app.run(host='0.0.0.0')

我的__init__.py中的 flask 配置:
app = Flask(__name__, instance_relative_config=True,
            instance_path='/CarrotApp/project/instance')
app.config.from_pyfile('flask.cfg')

我必须为实例使用绝对路径,因为Flask仅允许这样做。

我是Docker的新手,也不知道哪里出了问题。

编辑:根据@andre_vieira的答案更改了yml文件。添加了完整错误消息的屏幕截图

最佳答案

您是说docker文件位于the app文件夹中,并带有以下内容:

build: ./app

因此将其更改为:
build: .

这将消除:
Cannot locate specified Dockerfile

编辑:关于找不到配置文件。

我无法理解您在尝试什么,因为使用此行:
COPY . /app

您正在将所有文件复制到您的应用程序文件夹。因此,在容器内的路径类似于:
app/project/app/ 
app/project/instance
app/run
app/Dockerfile and yml files (any you don't need, and you don't want this files inside the container. 

这是您要尝试的吗?

尝试“ssh”到容器内部,检查文件是否存在,并查看路径是否如您所愿。

因为您说您的应用程序和配置文件位于
/ CarrotApp文件夹。但是您永远不会创建此文件夹。因此,尝试将init更改为:
app = Flask(__name__, instance_relative_config=True,
            instance_path='/app/project/instance')
app.config.from_pyfile('flask.cfg')

编辑2:

要仅传递所需文件,请仅复制该文件:
COPY project /app
COPY run.py /app
COPY requirements.txt /app

或者只是将所有这些文件放在名为“src”的文件夹或其他任何文件中,然后仅复制该文件夹:
COPY src /app

因此,您的结构将类似于:
 yourproject/
    src/
       project
           /app (created by Dockerfile)
           /instance
               flask.cfg
           /venv
           __init__.py
       run.py
       requirements.txt
    Dockerfile and yml files

关于python - Docker-compose无法找到Flask配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54418315/

相关文章:

python - 如何将句子对象合并在一起?

python - 导入错误 : No module named config on Travis-CI build

python - 在 Python 中为 Maya (Windows 10) 运行批处理文件时无法识别 Imagemagick

docker build 运行到 GB 大小

docker - 使用Prometheus "target relabeling"提取cAdvisor的不带标签的Docker镜像名称

mysql - 增加 mysql docker 中的 max_allowed_pa​​cket 大小

python - Flask 响应中迭代器的行为

python - 用Flask Python框架重写配置Lighttpd的问题

Python 定时器剩余时间

python - 使用 fastcgi 在 lighttpd 中托管 Flask 应用程序