최근 Docker 컨테이너 내에서 FastAPI서버를 실행하기위해 작업하던 중,
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
에러 메시지를 마주했다.
import cv2 # 에러발생
에러가 발생하는 위치를 확인해보니 opencv를 import하는 과정에서 발생한 에러라는 것을 확인할 수 있었다.
RUN pip install opencv-python
RUN apt-get update && apt-get -y install libgl1-mesa-glx #추가
OpenCV 라이브러리는 OpenGL 라이브러리(libGL.so.1)에 종속성을 가진다.
해당 라이브러리는 이미지나 비디오 표시와 같은 그래픽 처리와 관련된 작업을 수행할 때 사용하는데, Docker같이 헤드리스 환경(그래픽 디스플레이가 없는 환경)은 이러한 라이브러리가 존재하지 않기 때문에 이러한 에러가 발생하는 것 같다.
때문에 Dockerfile에 libgl1-mesa-glx를 추가하여 OpenGL 라이브러리를 제공한다면 문제가 해결된다.