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

Docker部署Streamlit+LightGBM遇libgomp.so.1缺失错误求助

Docker部署Streamlit+LightGBM时libgomp.so.1缺失问题解决

问题描述

运行容器时出现以下错误:

OSError: libgomp.so.1: cannot open shared object file: No such file or directory

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 565, in _run_script
    exec(code, module.__dict__)
  File "/src/stream.py", line 6, in <module>
    model = pickle.load(open('model.pkl', 'rb'))
  File "/usr/local/lib/python3.10/site-packages/lightgbm/__init__.py", line 8, in <module>
    from .basic import Booster, Dataset, Sequence, register_logger
  File "/usr/local/lib/python3.10/site-packages/lightgbm/basic.py", line 110, in <module>
    _LIB = _load_lib()
  File "/usr/local/lib/python3.10/site-packages/lightgbm/basic.py", line 101, in _load_lib
    lib = ctypes.cdll.LoadLibrary(lib_path[0])
  File "/usr/local/lib/python3.10/ctypes/__init__.py", line 452, in LoadLibrary
    return self._dlltype(name)
  File "/usr/local/lib/python3.10/ctypes/__init__.py", line 374, in __init__
    self._handle = _dlopen(self._name, mode)

已尝试在Dockerfile中添加libgomp1依赖,但问题未解决。当前使用的Dockerfile和requirements.txt如下:

当前Dockerfile

FROM ubuntu:latest
WORKDIR /src/
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        ca-certificates \
        cmake \
        build-essential \
        gcc \
        g++ \
        git && \
    rm -rf /var/lib/apt/lists/*

RUN apt-get update && apt-get -y install curl

RUN apt-get install libgomp1 -y
    # apt-get install curl 

FROM python:3.10.0-slim-buster

WORKDIR /src

COPY requirements.txt /src/

COPY --from=0 /src ./
RUN pip3 install -r requirements.txt

EXPOSE 8501

COPY . /src/
ENTRYPOINT ["streamlit", "run"]
CMD [ "stream.py" ]

requirements.txt

pandas
sklearn
streamlit
lightgbm

问题根源

多阶段构建中,第一阶段基于Ubuntu安装的libgomp1并没有被正确传递到第二阶段的Python slim镜像(基于Debian Buster)。两个发行版的系统库路径结构不同,仅复制/src目录无法将系统级的库文件转移到第二阶段,导致LightGBM启动时找不到libgomp.so.1。

解决方案

直接在Python slim镜像阶段安装libgomp1,无需多余的Ubuntu构建阶段。修正后的Dockerfile如下:

FROM python:3.10.0-slim-buster

WORKDIR /src

# 安装LightGBM所需的OpenMP库及基础依赖
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        libgomp1 \
        ca-certificates && \
    rm -rf /var/lib/apt/lists/*

COPY requirements.txt /src/
# 使用--no-cache-dir减少镜像体积
RUN pip3 install --no-cache-dir -r requirements.txt

EXPOSE 8501

COPY . /src/
ENTRYPOINT ["streamlit", "run"]
CMD [ "stream.py" ]

说明

  1. 移除多余的Ubuntu构建阶段,直接基于Python slim镜像构建,简化流程并减少镜像体积。
  2. 在Debian基础的Python镜像中直接安装libgomp1,该包在Debian Buster的官方源中可用,安装后LightGBM可直接找到所需库文件。
  3. 保留ca-certificates确保pip能正常下载PyPI包,清理apt缓存进一步减小镜像体积。
  4. 给pip添加--no-cache-dir参数,避免缓存安装包占用空间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:10:43