Docker ADD文件失败:构建ECR镜像时无法添加Python脚本的解决方法
问题解决思路及方案
错误根源
- Docker构建上下文限制:你在
docker/目录下执行docker build时,Docker的构建上下文仅包含docker/目录内的文件,无法访问上级目录的preprocessing.py和data_processes.py。 - 文件名拼写错误:你的Dockerfile中写的是
data_process.py,但实际文件名为data_processes.py,即使路径正确也会找不到文件。
修复方案(推荐)
无需调整现有文件结构,只需修改Dockerfile内容,并在项目根目录执行构建命令:
1. 修改docker/Dockerfile内容
FROM python:3.9.16-buster WORKDIR /usr/src/processing_job # 从项目根目录复制requirements.txt到容器工作目录 COPY docker/requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt ENV PYTHONUNBUFFERED=TRUE # 从项目根目录复制两个脚本到容器工作目录 COPY preprocessing.py ./ COPY data_processes.py ./ ENTRYPOINT ["python3", "preprocessing.py"]
2. 执行构建命令
打开终端,切换到项目根目录(即包含docker/文件夹、preprocessing.py、data_processes.py的目录),运行:
docker build -f docker/Dockerfile -t your-ecr-image-name .
-f docker/Dockerfile:指定Dockerfile的路径-t your-ecr-image-name:给镜像命名,后续推送到ECR时会用到- 最后的
.:指定构建上下文为当前项目根目录,这样Docker就能访问所有根目录下的文件
备选方案(调整文件结构)
如果愿意调整文件结构,可将preprocessing.py和data_processes.py移动到docker/目录下,修正Dockerfile里的data_process.py为data_processes.py,然后在docker/目录下执行docker build -t your-image-name .即可。不过这种方式会将脚本和Docker配置放在同一目录,可能不利于后续维护。
内容的提问来源于stack exchange,提问作者rushikesh maheshwari
相关产品推荐
相关产品推荐

