python - 在 Docker 子目录中运行 python 文件

标签 python python-3.x docker dockerfile

我有以下文件结构

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 与其依赖的所有代码放在同一目录中 - 这是一个要求吗?提前致谢!

最佳答案

您的 WORKDIR 设置为/project。

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

您正在将应用程序复制到“/app”,因此请使用以下命令:
CMD [ "python", "/app/main.py" ]

关于python - 在 Docker 子目录中运行 python 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61185842/

相关文章:

python - 通过属性以及索引访问递归访问字典?

amazon-web-services - Crontab没有凭证

docker - 找不到正在运行的docker-compose

python - 如何在 Pandas 数据框中添加另一个配对列?

从视频游戏截图中提取 Python 文本

python - 从 HTML 页面获取数据

python-3.x - 如何删除图像的特定部分?

docker - 为什么在 Dockerfile 中编译 Rust 程序时会重置 TARGET 环境变量?

Python - 将两个列表合并为一个 json 对象

python-3.x - 在 Windows 中安装 Python 3.8 和 dbt 后无法获取 ~/.dbt/folder 或 profiles.yml 文件