我有以下文件结构
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/