运行 Docker 子目录中的 python 文件

gre*_*ant 4 python python-3.x docker dockerfile

我有以下文件结构

\n\n
project \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.py\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 combine.py\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 scrape.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 resources\n|    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 secrets.py\n|    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 config.py\n|    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 requirements.txt\n|--- Dockerfile\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的 Dockerfile 看起来像

\n\n
FROM python:3.8\nRUN mkdir /project\nWORKDIR /project\n\nCOPY ./resources/requirements.txt ./\nADD ./resources/. /resources/\nADD ./app/. /app/\n\nRUN pip install -r ./requirements.txt\n\nCMD [ "python", "./app/main.py" ]\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n\n

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

\n

Oli*_*Oli 5

您的 WORKDIR 设置为 /project。

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

您要将应用程序复制到“/app”,因此请使用以下命令:

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