欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用python-slim鏡像遇到無法使用PostgreSQL的問題及解決方法

 更新時間:2024年08月21日 09:29:38   作者:程序設計實驗室  
這篇文章主要介紹了使用python-slim鏡像遇到無法使用PostgreSQL的問題及解決方法,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

前言

之前不是把 DjangoStarter 的 docker 方案重新搞好了嗎

一開始demo部署是使用 SQLite 數(shù)據(jù)庫的,用著沒問題,但很快切換到 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

好的,經(jīng)常被 docker 坑的人應該已經(jīng)看出問題出在系統(tǒng)環(huán)境上了

不使用 slim 鏡像換成普通的 python 鏡像就正常了…

解決

OK,既然找出問題原因,那么就可以來著手解決了。

使用 psycopg2-binary

最簡單的方法就是將 psycopg2 庫換成 psycopg2-binary,這是一個預編譯的 psycopg2 包,不需要編譯環(huán)境,安裝更簡便。

手動安裝 libpq 庫

既然缺了 libpq 庫,那就在 docker 鏡像里安裝。

這個方法我還沒測試,又麻煩又不優(yōu)雅

# 使用 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 系統(tǒng),默認是用 Debian 的最新穩(wěn)定版,也可以自己指定版本,比如 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內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • PostgreSQL備份和還原命令整理大全

    PostgreSQL備份和還原命令整理大全

    這篇文章主要給大家介紹了關于PostgreSQL備份和還原命令整理的相關資料,PostgreSQL是一款非常強大的開源數(shù)據(jù)庫系統(tǒng),提供種類繁多的備份選項,包括完全備份、增量備份等,需要的朋友可以參考下
    2023-07-07
  • springboot 沒法掃描到repository的解決

    springboot 沒法掃描到repository的解決

    這篇文章主要介紹了springboot 沒法掃描到repository的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • postgresql 中round函數(shù)的用法說明

    postgresql 中round函數(shù)的用法說明

    這篇文章主要介紹了postgresql 中round函數(shù)的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 使用docker compose啟動postgresql的示例代碼

    使用docker compose啟動postgresql的示例代碼

    要在啟動 PostgreSQL 容器時執(zhí)行特定的初始化文件,可以使用 Docker 的 docker-entrypoint-initdb.d 目錄,這個目錄下的 SQL 文件會在容器啟動時被自動執(zhí)行,下面是如何修改 Docker Compose 配置文件,以便在啟動時執(zhí)行初始化 SQL 腳本,需要的朋友可以參考下
    2024-10-10
  • PostgreSQL對GROUP BY子句使用常量的特殊限制詳解

    PostgreSQL對GROUP BY子句使用常量的特殊限制詳解

    這篇文章主要介紹了PostgreSQL對GROUP BY子句使用常量的特殊限制詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • PostgreSQL慢SQL的定位排查方法

    PostgreSQL慢SQL的定位排查方法

    所謂慢SQL 是指在數(shù)據(jù)庫中執(zhí)行時間超過指定閾值的語句,慢查詢太多,對于業(yè)務而言,是有很大風險的,可能隨時都會因為某種原因而被觸發(fā),本篇文章將介紹 PostgreSQL 慢 SQL 如何定位排查,需要的朋友可以參考下
    2024-07-07
  • Postgresql使用update語句的方法示例

    Postgresql使用update語句的方法示例

    PostgreSQL是一種開源的關系型數(shù)據(jù)庫管理系統(tǒng),它支持SQL語言以及許多高級功能,如事務、外鍵、觸發(fā)器等,下面這篇文章主要給大家介紹了關于Postgresql使用update語句的相關資料,需要的朋友可以參考下
    2024-04-04
  • PostgreSQL用戶、數(shù)據(jù)庫及表的管理、操作與授權方式

    PostgreSQL用戶、數(shù)據(jù)庫及表的管理、操作與授權方式

    這篇文章主要介紹了PostgreSQL用戶、數(shù)據(jù)庫及表的管理、操作與授權操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL設置時區(qū)、時間/日期函數(shù)匯總大全

    PostgreSQL設置時區(qū)、時間/日期函數(shù)匯總大全

    PostgreSQL是一款簡介而又性能強大的數(shù)據(jù)庫應用程序,其在日期時間數(shù)據(jù)方面所支持的功能也都非常給力,這篇文章主要給大家介紹了關于PostgreSQL設置時區(qū)、時間/日期函數(shù)的相關資料,需要的朋友可以參考下
    2023-09-09
  • PostGresql 實現(xiàn)四舍五入、小數(shù)轉換、百分比的用法說明

    PostGresql 實現(xiàn)四舍五入、小數(shù)轉換、百分比的用法說明

    這篇文章主要介紹了PostGresql 實現(xiàn)四舍五入、小數(shù)轉換、百分比的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論