You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins中Python Alpine Docker运行psycopg2报libresolv.so.2缺失

问题场景
  • Jenkins CI/CD流水线使用3.9.13-alpine3.16作为Python应用的基础镜像,应用部署目标为AWS Lambda,唯一特殊依赖是用于连接Postgres的aws-psycopg2
  • 项目本地、Serverless部署到AWS Lambda后均运行正常,仅Jenkins流水线执行时抛出共享库加载错误
  • 未使用Oracle相关组件,不属于已知的Oracle类libresolv.so.2报错场景
  • 已尝试在apk安装命令中添加多组系统依赖,均未修复问题;相同代码在Ubuntu 20.04、AWS Lambda原生运行时可正常运行,判定为Alpine环境缺失对应系统依赖

报错信息

16:24:55  ImportError: Error loading shared library libresolv.so.2: No such file or directory (needed by /usr/local/lib/python3.9/site-packages/psycopg2/../psycopg2_binary.libs/libgssapi_krb5-497db0c6.so.2.2)

现有Jenkinsfile配置

def testInstallStage = {
  stage('Install') {
    sh 'apk add python3-dev gcc libc-dev musl-dev openblas gfortran build-base postgresql-libs postgresql-dev libffi-dev cargo'
    sh 'pip install --upgrade pip && pip install poetry'
    sh 'poetry export --without-hashes --dev -f requirements.txt -o requirements.txt --with-credentials'
    sh 'pip install -r requirements.txt'

    sh 'pip install awscli'
    sh 'aws configure set aws_access_key_id default_access_key'
    sh 'aws configure set aws_secret_access_key default_secret_key'
    sh 'aws configure set default.region eu-west-1'

    sh 'cp config/jenkins.json config.json'
  }
}

def testStage = {
  stage('Tests') {
    sh 'pip install nose && nosetests'
  }
}

new pl.ruby.PipelineRunner(this, notificationChannel).run() {
  pythonStack([image: '3.9.13-alpine3.16'], {
    container('python') {
      testInstallStage.call()
      testStage.call()
    }
  })
}
修复方案

直接在现有apk add的安装列表里追加两个包即可:libnsl、krb5-libs。

  • libnsl包直接提供报错缺失的libresolv.so.2共享库
  • krb5-libs提供libgssapi_krb5.so依赖的MIT Kerberos v5运行时库,解决链式依赖问题

如果追加上述两个包后仍有其他glibc相关共享库缺失报错,再追加安装libc6-compat包即可,这个包提供了Alpine musl libc对glibc二进制的兼容层,适配aws-psycopg2自带的预编译二进制依赖。

如果不想装兼容层,也可以在pip安装依赖时加--no-binary :all:参数强制从源码编译psycopg2,编译后的版本直接依赖Alpine原生的musl库,不会出现这类预编译二进制的兼容问题。


内容的提问来源于stack exchange,提问作者qalis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 11:24:41