AWS Lambda Python -如何使用多个源代码包构造Dockerfile

aor9mmx1  于 2022-12-21  发布在  Python
关注(0)|答案(1)|浏览(124)

我需要为我的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不同。我在这里做错了什么?

jogvjijk

jogvjijk1#

看起来您在Dockerfile中缺少COPY命令,该命令会将所有源文件复制到容器中。您需要添加如下内容:

COPY src/ /src/

这将把src/目录中的所有文件复制到容器中。
此外,您可能需要更新CMD行以指向正确的文件。当使用Lambda基础映像时,CMD行应如下所示:

CMD ["python3", "mainRunner.py"]

相关问题