【发布时间】:2022-04-14 06:09:32
【问题描述】:
我正在尝试使用 this tutorial 将 docker 容器上传到 AWS ECR 以用于 Lambda。我的问题是我的 python 脚本使用 psycopg2,我不知道如何在 Docker 映像中安装 psycopg2。我知道我需要postgres-devel 用于libq 库和gcc 用于编译,但它仍然不起作用。
我的要求.txt:
pandas==1.3.0
requests==2.25.1
psycopg2==2.9.1
pgcopy==1.5.0
Dockerfile:
FROM public.ecr.aws/lambda/python:3.8
WORKDIR /app
COPY my_script.py .
COPY some_file.csv .
COPY requirements.txt .
RUN yum install -y postgresql-devel gcc*
RUN pip install -r requirements.txt
CMD ["/app/my_script.handler"]
在本地构建、运行映像并测试 lambda 函数后,我收到以下错误消息:
psycopg2.OperationalError: SCRAM authentication requires libpq version 10 or above
所以我认为容器的 postgres(-devel) 版本错误。但我不确定如何安装正确的版本?将 psycopg2 脚本部署到 docker 以使用 lambda 的任何提示?
【问题讨论】:
-
您可以随时尝试将
psycopg2中的requirements.txt换成psycopg2-binary。这应该与所有需要的库一起预先打包。 -
@KyleParsons 谢谢你,这实际上解决了我的问题。我只是想知道因为in their docs,他们说不要在生产中使用二进制版本
-
是的,我不明白为什么他们建议从源代码构建而不是使用二进制文件。我在
psycopg2-binary上取得了一些成功,但 YMMV。
标签: python amazon-web-services docker aws-lambda psycopg2