Docker에서 GLFW 실행

Docker에서 GLFW 실행

GLFW를 사용하여 빈 창을 여는 Go로 작성된 간단한 프로그램이 있습니다. 테스트를 자동으로 실행하고 싶어서 GLFW를 docker에서 실행하려고 노력해 왔습니다. 지금까지 xvfb를 성공적으로 실행했습니다.

GLX extension not found내 문제는 에 전화할 때 오류가 발생한다는 것입니다 glfwInit. 또한 실행하면 glxinfo이 오류가 발생합니다 couldn't find RGB GLX visual or fbconfig. 내가 온라인에서 찾을 수 있는 것은 GLFW가 GPU를 찾을 수 없기 때문입니다(GPU가 없기 때문입니다).

여전히 라이브러리를 설치해야 합니까, 아니면 다른 것을 구성할 수 있습니까?(예: 헤드리스 모드에서 GLFW 실행)이 오류를 방지하려면?

다음은 내 Dockerfile의 단축 버전입니다(Go 특정 항목은 제거됨).

FROM alpine:latest

RUN apk --no-cache add ca-certificates wget
RUN wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.28-r0/glibc-2.28-r0.apk
RUN apk add glibc-2.28-r0.apk

RUN apk update
RUN apk add gcc
RUN apk add mesa-dev
RUN apk add libx11-dev
RUN apk add libc-dev
RUN apk add libx11-dev
RUN apk add libxcursor-dev
RUN apk add libxi-dev
RUN apk add libxinerama-dev
RUN apk add libxrandr-dev
RUN apk add xorg-server
RUN apk add xvfb
RUN apk add coreutils
RUN apk add mesa
RUN apk add mesa-gl
RUN apk add mesa-demos
RUN apk add xvfb-run --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/main/ --allow-untrusted
RUN apk add mesa-osmesa

#if you are unfamiliar with docker, this is the command that gets run when starting the container.
ENTRYPOINT xvfb-run -e /dev/stderr --server-args=':99 -screen 0 640x480x8 +extension GLX +render -noreset -ac' glxinfo | cat

산출:

The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported high keycode 372 for name <I372> ignored
>                   X11 cannot support keycodes above 255.
>                   This warning only shows for the first high keycode.
Errors from xkbcomp are not fatal to the X server
name of display: :99
Error: couldn't find RGB GLX visual or fbconfig

XKEYBOARD 경고는 중요하지 않으며 무시해도 된다고 생각합니다.

답변1

mesa-dri-galliumGLX 확장을 활성화하는 패키지가 누락된 것으로 나타났습니다 .

완성된 Dockerfile은 다음과 같습니다.

FROM alpine:edge

RUN apk update

# Dependencies for GLFW (not required for this example)
RUN apk add \
    build-base \
    libx11-dev \ 
    libxcursor-dev \
    libxrandr-dev \
    libxinerama-dev \
    libxi-dev \
    mesa-dev

# Required to run xvfb-run
RUN apk add mesa-dri-gallium xvfb-run

# virtualgl includes glxinfo
RUN apk add virtualgl --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted

ENTRYPOINT xvfb-run -e /dev/stderr glxinfo | cat

관련 정보