You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker启动报错:无法找到/app/main.py文件,寻求技术帮助

问题排查:Docker容器找不到main.py文件

错误原因

script_execution_service启动时找不到/app/main.py,核心问题出在卷挂载覆盖容器内文件:

  • 你的docker-compose.yml中给script_execution_service配置了挂载:- ./script_execution_service/app:/app,这条命令会把容器内的/app目录完全替换成本地的./script_execution_service/app目录。
  • 虽然Docker构建时已经把本地script_execution_service根目录下的main.py复制到了容器的/app里,但因为本地script_execution_service/app是空目录,挂载后容器内的/app就被清空了,导致main.py丢失。

解决方案(二选一)

方案1:移除不必要的卷挂载(推荐,适合生产或不需要本地代码同步的场景)

如果不需要实时同步本地app目录到容器,直接删除script_execution_service下的app挂载配置,同时添加数据库目录挂载(否则脚本访问不到数据库文件):

version: '3.8'

services:
  data_storage_service:
    build:
      context: ./data_storage_service
    container_name: data_storage_service
    volumes:
      - ./data_storage_service/db:/db
  script_execution_service:
    build:
      context: ./script_execution_service
    container_name: script_execution_service
    depends_on:
      - data_storage_service
    # 移除原有的app目录挂载
    # volumes:
    #   - ./script_execution_service/app:/app
    environment:
      - DB_PATH=/db/initial-db.sqlite
    # 添加数据库目录挂载
    volumes:
      - ./data_storage_service/db:/db

执行以下命令重新构建启动:

docker-compose down
docker-compose up --build

方案2:调整文件结构与配置(适合开发调试,需要实时同步代码)

  1. 调整本地文件结构:把main.py移动到script_execution_service/app目录下:
script_execution_service
    ├── app
    │   └── main.py
    ├── Dockerfile
    └── requirements.txt
  1. 修改Dockerfile:调整COPY命令,只复制app目录到容器的/app:
FROM python:3.10

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制本地app目录到容器的/app
COPY app/ .
CMD ["python", "main.py"]
  1. 修改docker-compose.yml:保留app目录挂载,同时添加数据库目录挂载:
script_execution_service:
    build:
      context: ./script_execution_service
    container_name: script_execution_service
    depends_on:
      - data_storage_service
    volumes:
      - ./script_execution_service/app:/app
      - ./data_storage_service/db:/db
    environment:
      - DB_PATH=/db/initial-db.sqlite

执行docker-compose down && docker-compose up --build重新启动即可。

额外注意事项

当前initial-db.sqlite为空,脚本尝试查询ventes表会报错,后续需要先在数据库中创建对应表才能正常运行。

内容的提问来源于stack exchange,提问作者Spoofa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 10:20:00