【问题标题】:python: can't open file 'manage.py': [Errno 2] No such file or directory when compose dockerpython:无法打开文件'manage.py':[Errno 2]撰写docker时没有这样的文件或目录
【发布时间】:2025-07-21 08:20:02
【问题描述】:

我在容器中运行两个不同的应用程序。

  1. Django 应用程序
  2. Flask 应用程序

Django 跑得很好。我将我的 Flask 应用程序配置如下:

这是一个 docker-compose.yml

version: '3.8'
services:
  backend:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8001:5000
    volumes:
      - .:/app
    depends_on:
      - db

  db:
    image: mysql:5.7.22
    restart: always
    environment:
      MYSQL_DATABASE: main
      MYSQL_USER: username
      MYSQL_PASSWORD: pwd
      MYSQL_ROOT_PASSWORD: pwd
    volumes:
      - .dbdata:/var/lib/mysql
    ports:
      - 33067:3306

这也是我的 Dockerfile

FROM python:3.8
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY . /app

CMD python main.py

问题:当我跑步时 docker-compose up出现以下错误

backend_1  | python: can't open file 'manage.py': [Errno 2] No such file or directory

我不知道为什么它会尝试打开 manage.py 文件,因为它是 Flask 而不是 Django App。我需要你的帮助。提前致谢。

【问题讨论】:

  • manage.py 可能位于您项目的根目录(与 requirements.txt 相同的目录)您是否尝试将 COPY manage.py /app/manage.py 添加到您的 dockerfile 中?这是烧瓶还是 django?
  • @TenaciousB manage.py 在 django 项目中,这是一个与烧瓶应用程序非常不同的文件夹

标签: python docker flask


【解决方案1】:

我不确定这对你有什么作用,但是我通过将 docker-compose.yml 更改为具有命令参数来解决这个问题,所以它看起来像这样

version: '3.8'
services:
  backend:
    build:
      context: .
      dockerfile: Dockerfile
    command: 'python main.py' << Updated Line >>
    ports:
      - 8001:5000
    volumes:
      - .:/app
    depends_on:
      - db

  db:
    image: mysql:5.7.22
    restart: always
    environment:
      MYSQL_DATABASE: main
      MYSQL_USER: username
      MYSQL_PASSWORD: pwd
      MYSQL_ROOT_PASSWORD: pwd
    volumes:
      - .dbdata:/var/lib/mysql
    ports:
      - 33067:3306

【讨论】:

    【解决方案2】:

    我不知道确切原因,但我启动了一个新的 Flask 应用程序(但这次是在 virtualenv 上)并且我的问题已解决 :)

    【讨论】: