我正在从testdriven.io编写一个教程(用Python、Flask和Docker进行测试驱动的开发),并运行以下命令:
docker-compose exec api python manage.py recreate_db我得到了以下错误: qlalchemy.exc.OperationalError:(Kercopg2.OperationalError) SCRAM身份验证需要libpq 10或更高版本
从我所做的研究来看,这是因为libpq不是内核2-二进制的正确版本。我已经厌倦了很多建议,比如在满足要求之前在我的docker文件中包含以下内容:
RUN apt-get -qq update && apt-get -qq install curl libpq-dev gcc 1> /dev/null我也尝试过使用psycopg2而不是内核2-二进制。
我尝试了各种对接图像,但仍然无法通过这一点。任何帮助都将不胜感激。
我的系统: Macbook版本12.1苹果M1 Pro芯片
Requirements.txt文件:
flask==2.1.1
flask-restx==0.5.1
Flask-SQLAlchemy==2.5.1
psycopg2-binary==2.9.3
pytest==7.1.1Dockerfile:
# pull official base image
FROM python:3.10.3-slim-buster
# set working directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1 .
ENV PYTHONBUFFERED 1
#RUN apt-get -qq update && apt-get -qq install curl libpq-dev gcc 1> /dev/null
# install system dependencies
RUN apt-get update \
&& apt-get -y install netcat gcc postgresql \
&& apt-get clean
# add and install requirements
COPY ./requirements.txt .
RUN pip install -U --trusted-host files.pythonhosted.org --trusted-host pypi.org -r requirements.txt
# add app
COPY . .
# add entrypoint.sh
COPY ./entrypoint.sh .
RUN chmod +x /usr/src/app/entrypoint.sh发布于 2022-07-22 17:54:20
在“迈克尔·赫尔曼”的帮助下,我成功地完成了这个任务。我把postgres的图像版本从14降到了11,这解决了这个问题。
https://stackoverflow.com/questions/73015135
复制相似问题