【问题标题】:Run python file in subdirectory Docker在子目录 Docker 中运行 python 文件
【发布时间】:2020-04-13 10:24:31
【问题描述】:

我有以下文件结构

project 
├── app
│   ├── main.py
│   └── combine.py
│   └── scrape.py
├── resources
|    └── secrets.py
|    └── config.py
|    └── requirements.txt
|--- Dockerfile

我的 Dockerfile 看起来像

FROM python:3.8
RUN mkdir /project
WORKDIR /project

COPY ./resources/requirements.txt ./
ADD ./resources/. /resources/
ADD ./app/. /app/

RUN pip install -r ./requirements.txt

CMD [ "python", "./app/main.py" ]

我使用docker build -t my-app . 构建我的映像并使用docker run my-app 运行

我收到以下错误 python: can't open file './app/main.py': [Errno 2] No such file or directory

我可以保留子目录文件结构并成功运行 Docker 映像吗?我之前看到的所有教程/问题都将 Dockerfile 与它所依赖的所有代码放在同一目录中 - 这是一个要求吗?提前致谢!

【问题讨论】:

    标签: python python-3.x docker dockerfile


    【解决方案1】:

    您的 WORKDIR 设置为 /project。

    您的 CMD 作为“./app”运行,因此转换为“/project/app”。

    您正在将应用程序复制到“/app”,所以使用这个:

    CMD [ "python", "/app/main.py" ]

    【讨论】:

    • 谢谢!现在出现导入错误,我无法理解,但这可能是一个新问题
    • 您可以为COPYADD 的目标参数使用相对路径,所以COPY ./resources/ ./resources/ 并保持您当前的目录布局也可以解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2017-08-11
    • 2021-08-16
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    相关资源
    最近更新 更多