我有一个使用Fyne框架用Golang编写的项目.在try 将这些类型的应用程序Docker化时,我意识到了与X11相关的问题.这是我的文档文件:

FROM golang:1.20

WORKDIR /app

COPY . .

RUN go mod download
RUN apt-get update && apt-get install -y libgl1-mesa-dev xorg-dev x11-apps dbus-x11 xvfb make
RUN make

# my Golang app takes in a single command line argument hence the ENTRYPOINT.
# specifically, the command line argument is an address the application will use.
ENTRYPOINT ["./cmd/server/server"]

以下是我的运营方式: docker run -e DISPLAY=$DISPLAY -p 8080:3000 --net=host red "localhost:3000"

然而,这似乎导致了错误:

PlatformError: X11: Failed to open display :0
panic: NotInitialized: The GLFW library is not initialized

我也知道可用的fyne-cross项目.我试图使用它,但也遇到了更多的问题.然而,我想亲自try 一下Dockerize这个项目.

我试着做xhost + local:docker(我知道,不安全),但同样的错误弹出. 我也try 过: docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix red "localhost:3000" 我也试过用--net=host和不用--net=host.我在另一篇文章中看到了这个解决方案,但它似乎没有起到任何作用.关于背景,我在Ubuntu上.

推荐答案

据我所知,X11转发没有公开运行Fyne应用程序所需的OpenGL驱动程序.这类似于Fyne应用程序无法从Headless Linux启动的公开问题.

Go相关问答推荐

Go Fiber和HTMX—HX—Trigger header被更改为HX—Trigger,这不是HTMX监听的内容

有没有办法通过Go cmdline或IDE(IntelliJ)找出我的 struct 实现了什么接口?

Go:拆分一个由逗号分隔的键/值对字符串,并在给定的键/价值对中嵌入可能的逗号

如何使用 html/template 在 golang 中运行一个范围内的范围

死锁 - 所有 goroutine 都处于睡眠状态(即使使用等待组)

在 go 中,将接收器 struct 从值更改为指针是否向后兼容?

使用 OpenTelemetry 统一不同服务的范围

是否可以在 hyperledger-chaincode 中使用 gRPC?如果可以,我如何避免在测试网络上调用时出错?

最长连续重复的字符golang

由于 main.go 文件中的本地包导入导致构建 docker 容器时出错

MQTT 客户端没有收到另一个客户端发送的消息

Neptune 在连接到启用 IAM 的 Neptune 实例时抛出握手错误错误

如何将 base64 编码的公钥转换为 crypto.PublicKey 或 ecdsa.PublicKey

使用 unsafe.Pointer 将 struct point直接转换为另一个 struct 是否安全?

如何使用 Go 代理状态为 OK 的预检请求?

每次有人进入我的网站时如何运行特定功能?

Ginkgo/Gomega panic 测试失败

使用 xml.Name 将 xml 解组为 [] struct

处理程序中的无限循环

从 map 返回空数组而不是空字符串数组