gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 20:45:50 24 4
gpt4 key购买 nike

我关注了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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com