Fyne 系列 14:Docker 编译 Linux 版本
cbowen

Linux 桌面程序最容易遇到环境差异。用 Docker 编译 Fyne 的 Linux 版本,可以把 Go 版本、系统依赖、构建命令固定下来,方便在 CI 和本机复现。

Dockerfile 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
FROM golang:1.24-bookworm

RUN apt-get update && apt-get install -y \
gcc \
libgl1-mesa-dev \
xorg-dev \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /src

COPY go.mod go.sum ./
RUN go mod download

COPY . .
RUN go install fyne.io/fyne/v2/cmd/fyne@latest
RUN fyne package -os linux -name MyTool -icon icon.png

这个镜像只作为起点。实际项目里还需要根据报错补充 Wayland、音频、剪贴板等依赖。

构建镜像

1
docker build -t fyne-linux-build .

如果希望把产物复制出来,可以使用多阶段构建,或者在容器运行时挂载输出目录。

1
docker run --rm -v "$PWD/dist:/dist" fyne-linux-build

Go Module 缓存

CI 里建议缓存 Go module,这样每次构建不用重新下载所有依赖。

本地调试时,也可以把 GOMODCACHE 挂到宿主机目录,不过这会让 Dockerfile 变复杂。刚开始先保证能稳定构建更重要。

Docker 适合做什么

Docker 适合编译 Linux 产物,不适合直接解决所有平台问题。Windows 和 macOS 的应用包、签名、系统集成,仍然建议在对应平台处理。

常见问题

如果 Docker 构建时报图形库缺失,优先检查错误里的头文件名。如果运行时报字体异常,需要确认目标系统是否有中文字体。

Fyne 程序发布给 Linux 用户时,最好说明测试过的发行版和桌面环境。

 评论
评论插件加载失败
正在加载评论插件