当前位置: 代码网 > it编程>前端脚本>Python > 使用python-slim镜像遇到无法使用PostgreSQL的问题及解决方法

使用python-slim镜像遇到无法使用PostgreSQL的问题及解决方法

2024年08月21日 Python 我要评论
前言之前不是把 djangostarter 的 docker 方案重新搞好了吗一开始demo部署是使用 sqlite 数据库的,用着没问题,但很快切换到 postgresql 的时候就遇到问题了&he

前言

之前不是把 djangostarter 的 docker 方案重新搞好了吗

一开始demo部署是使用 sqlite 数据库的,用着没问题,但很快切换到 postgresql 的时候就遇到问题了…

报错

docker 启动之后,app 容器报错

django.core.exceptions.improperlyconfigured: error loading psycopg2 or psycopg module

排错

一开始我还以为是 psycopg2 库装不上,或者是在 python_builder 阶段的依赖没有正确复制到 final 阶段的容器,但后面改了几个地方,重新试了一下都不行。

接下来使用 python src/manage.py shell 进入 shell,测试一下能否导入 psycopg2 库

>>> import psycopg2
traceback (most recent call last):
  file "<console>", line 1, in <module>
  file "/project/.venv/lib/python3.11/site-packages/psycopg2/__init__.py", line 51, in <module>
    from psycopg2._psycopg import (                     # noqa
importerror: libpq.so.5: cannot open shared object file: no such file or directory

好的,经常被 docker 坑的人应该已经看出问题出在系统环境上了

不使用 slim 镜像换成普通的 python 镜像就正常了…

解决

ok,既然找出问题原因,那么就可以来着手解决了。

使用 psycopg2-binary

最简单的方法就是将 psycopg2 库换成 psycopg2-binary,这是一个预编译的 psycopg2 包,不需要编译环境,安装更简便。

手动安装 libpq 库

既然缺了 libpq 库,那就在 docker 镜像里安装。

这个方法我还没测试,又麻烦又不优雅

# 使用 python 3.11 slim 基础镜像
from python:3.11-slim
# 安装 psycopg2 依赖
run apt-get update && apt-get install -y \
    libpq-dev \
    gcc \
    # 清理缓存以减少镜像大小
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

不同的python基础镜像

python镜像基于 debian 系统,默认是用 debian 的最新稳定版,也可以自己指定版本,比如 python3.11-slim-bookworm 就是指定用 debian 12 ("bookworm") 作为基础镜像

  • python3.11-slim-bookworm 基础镜像打包出来的镜像大小是424mb,python3.11-slim 打包出来也是这个大小
  • 使用 python3.11 基础镜像打包出来就到 1.3g 了,大小直接翻了几倍

还可以选择 alpine 镜像,不过可能会遇到更多兼容性问题,我就不折腾了,心累。

小结

一般选 slim 镜像还是可以的,基于 debian 不怎么需要担心兼容性问题

偶尔遇到小问题还是比较好解决的

alpine 镜像不一样的地方就很多了,太折腾了…

到此这篇关于使用python-slim镜像遇到无法使用postgresql的问题的文章就介绍到这了,更多相关python-slim无法使用postgresql内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com