42 lines
1.4 KiB
Docker
42 lines
1.4 KiB
Docker
FROM golang:1.22-bookworm
|
|
|
|
# Fyne links against native desktop libraries, so the container must include a C
|
|
# compiler plus OpenGL/X11 headers. --no-install-recommends keeps the image from
|
|
# pulling in unrelated desktop packages that are not needed for compilation.
|
|
RUN apt-get update && \
|
|
dpkg --add-architecture arm64 && \
|
|
apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
gcc \
|
|
libc6-dev \
|
|
gcc-aarch64-linux-gnu \
|
|
libc6-dev-arm64-cross \
|
|
linux-libc-dev-arm64-cross \
|
|
gcc-mingw-w64-x86-64 \
|
|
binutils-mingw-w64-x86-64 \
|
|
pkg-config \
|
|
libgl1-mesa-dev \
|
|
xorg-dev \
|
|
libgl1-mesa-dev:arm64 \
|
|
libx11-dev:arm64 \
|
|
libxcursor-dev:arm64 \
|
|
libxrandr-dev:arm64 \
|
|
libxinerama-dev:arm64 \
|
|
libxi-dev:arm64 \
|
|
libxxf86vm-dev:arm64 && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /src
|
|
|
|
# Copy module files first so Docker can cache downloaded dependencies while the
|
|
# application source changes. The release script later mounts the live repository
|
|
# over /src, but the module cache remains in the image and keeps repeated builds
|
|
# faster.
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
# The image intentionally stops here. Artifact build commands live in
|
|
# scripts/build-release-linux.sh so a developer can choose targets interactively
|
|
# without rebuilding this environment image for every selection.
|