基于python slim镜像的Django容器安装psycopg2-binary报pg_config缺失错误
修复步骤
1. 优先调整psycopg2-binary版本(无额外系统依赖)
你当前锁定的psycopg2-binary==2.7.4无对应Python 3.8环境的预编译包,pip会自动切换为源码编译模式,进而触发缺少pg_config的报错。修改requirements.txt:
asgiref==3.3.1 Django==3.1.4 # 替换为兼容Python3.8、带预编译包的版本 psycopg2-binary==2.9.1 pytz==2020.5 sqlparse==0.4.1 django-compressor>=2.2 django-libsass>=0.7
2. 若必须锁定老版本psycopg2,补充Dockerfile系统依赖
如果业务必须使用psycopg2-binary==2.7.4,需要在镜像构建阶段提前安装PostgreSQL开发环境与编译工具,修改Dockerfile:
FROM python:3.8.3-slim-buster ENV PYTHONUNBUFFERED 1 # 新增安装PostgreSQL开发包、编译工具,同时清理apt缓存减小镜像体积 RUN apt-get update && apt-get install -y --no-install-recommends \ libpq-dev \ gcc \ && rm -rf /var/lib/apt/lists/* RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install --no-cache-dir -r requirements.txt ADD ./ /code/
3. 修正docker-compose.yml拼写错误
原配置中version行多了空格,可能导致配置解析异常,修改为:
version: "3.9" services: db: image: postgres environment: - POSTGRES_DB=postgres - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres volumes: - pgdata:/var/lib/postgresql/data web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db volumes: pgdata:
验证方式
修改完成后重新执行docker-compose up --build即可正常完成依赖安装。
内容的提问来源于stack exchange,提问作者Bill Thornton
相关产品推荐
相关产品推荐

