我需要为我的python项目构建一个Docker容器,这样我就可以将其部署到AWS ECR并根据一周中的某一天触发容器作业。由于我有几个源包,我很难将源文件正确复制到Docker容器中。
项目结构如下:
Dockerfile
requirements.txt
src/
Package1/
src1.py
Package2/
src2.py
Package3/
src3.py
Runner/
mainRunner.py
其中mainRunner.py包含我的处理程序方法。
mainRunner.py 内容示例:
from Package1 import src1
def handler(event, context):
src1.main()
下面是Dockerfile的内容:
FROM public.ecr.aws/lambda/python:3.9
RUN mkdir /src
ADD src /src/
ADD requirements.txt .
RUN pip3 cache purge && pip3 install -U pip wheel setuptools && pip3 install -r requirements.txt
WORKDIR src/Runner/
ENV PYTHONPATH /src
CMD ["mainRunner.handler"]
当我在本地运行Docker容器时,收到以下错误:
第一个月
我试着在容器中本地执行,但找不到源代码文件。我可以很好地使用这个相同的Dockerfile和python基础映像(来自python:3.9)-除了python基础映像CMD python3 mainRunner.py
的CMD不同。我在这里做错了什么?
1条答案
按热度按时间jogvjijk1#
看起来您在Dockerfile中缺少COPY命令,该命令会将所有源文件复制到容器中。您需要添加如下内容:
这将把src/目录中的所有文件复制到容器中。
此外,您可能需要更新CMD行以指向正确的文件。当使用Lambda基础映像时,CMD行应如下所示: