docker镜像中python函数的绝对路径



我有以下功能可以从项目目录中删除抓取的图像:

import os
# Function to delete all .jpg files from project directory
def remove_jpg():
# script_dir = os.path.dirname(__file__)
# rel_path = "/Users/myname/Documents/project_directory/"
# abs_file_path = os.path.join(script_dir, rel_path)
path = "/Users/myname/Documents/project_directory/"
for file in os.scandir(path):
if file.name.endswith(".jpg"):
os.unlink(file.path)
# Main function ----
if __name__ == '__main__':
remove_jpg()

当我通过docker build -t project-test1 .创建Docker镜像,并在Docker Desktop应用程序中运行项目时,我总是会收到以下错误:

FileNotFoundError: [Errno 2] No such file or directory: '/Users/myname/Documents/project_directory/'

我曾尝试过让path变量成为一个非绝对的变量,但我没有成功地利用上面函数中注释掉的代码来运行它。这是Dockerfile中的COPY . .本身的问题,还是函数中的错误代码?

命令COPY . .将当前文件夹的内容复制到容器映像的根目录中(除非您之前使用WORKDIR更改了工作文件夹(。

脚本中的路径指向您的本地目录,该目录通常不是容器中的有效路径。为了使代码在本地和容器内工作,应该通过利用相对路径或通过脚本参数或环境变量指定目标目录来避免对文件名进行硬编码。

顺便说一下,您可以检查运行docker run -it project-test1 bash的容器内文件的实际路径,并四处查看。

最新更新