55 lines
1.7 KiB
Docker
55 lines
1.7 KiB
Docker
FROM golang:1.26.5-alpine AS build
|
|
|
|
WORKDIR /src
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY cmd/ ./cmd/
|
|
COPY pkg/ ./pkg/
|
|
|
|
RUN go test -count=1 ./...
|
|
|
|
ARG GIT_SHA=unknown
|
|
RUN CGO_ENABLED=0 go build -trimpath \
|
|
-ldflags="-s -w -X main.gitSHA=${GIT_SHA}" \
|
|
-o /out/flock ./cmd/flock \
|
|
&& CGO_ENABLED=0 go build -trimpath \
|
|
-ldflags="-s -w -X main.gitSHA=${GIT_SHA}" \
|
|
-o /out/flock-agent ./cmd/flock-agent \
|
|
&& CGO_ENABLED=0 go build -trimpath \
|
|
-ldflags="-s -w -X main.gitSHA=${GIT_SHA}" \
|
|
-o /out/flock-installer ./cmd/flock-installer
|
|
|
|
FROM alpine:3.21 AS bird-build
|
|
|
|
ARG BIRD_VERSION=2.19.1
|
|
ARG BIRD_SHA256=e91aedac07da4f2718f269f969f65dbcd12f4b58248a784fd32e587b7b4dd7e4
|
|
|
|
RUN apk add --no-cache \
|
|
bison \
|
|
build-base \
|
|
curl \
|
|
flex \
|
|
libssh-dev \
|
|
linux-headers \
|
|
ncurses-dev \
|
|
readline-dev \
|
|
&& curl -fsSL --proto '=https' --tlsv1.2 \
|
|
"https://bird.nic.cz/download/bird-${BIRD_VERSION}.tar.gz" \
|
|
-o /tmp/bird.tar.gz \
|
|
&& echo "${BIRD_SHA256} /tmp/bird.tar.gz" | sha256sum -c - \
|
|
&& tar -xzf /tmp/bird.tar.gz -C /tmp \
|
|
&& cd "/tmp/bird-${BIRD_VERSION}" \
|
|
&& ./configure --prefix=/usr --sysconfdir=/etc/bird --runstatedir=/run/bird \
|
|
&& make -j"$(nproc)" \
|
|
&& make DESTDIR=/out install
|
|
|
|
FROM alpine:3.21
|
|
RUN apk add --no-cache iproute2 nftables ca-certificates libssh ncurses-libs readline
|
|
COPY --from=bird-build /out/usr/sbin/bird /usr/sbin/bird
|
|
COPY --from=bird-build /out/usr/sbin/birdc /usr/sbin/birdc
|
|
COPY --from=build /out/flock /usr/local/bin/flock
|
|
COPY --from=build /out/flock-agent /usr/local/bin/flock-agent
|
|
COPY --from=build /out/flock-installer /usr/local/bin/flock-installer
|
|
ENTRYPOINT ["/usr/local/bin/flock-agent"]
|