build: add manual docker multistep build (!114)

- Include two Dockerfiles in the repo: one for Goreleaser and one for manual builds
- Update the Goreleaser config to use it's own Dockerfile
- The Dockerfile for manual builds uses a two step process to build the exporter - this way the base system does not need Go installed

https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/merge_requests/114
This commit is contained in:
Hector 2023-10-27 06:01:41 +00:00
parent 31b29021c5
commit f4d6598308
4 changed files with 36 additions and 4 deletions

View file

@ -23,6 +23,7 @@ dockers:
extra_files: extra_files:
- health - health
use: buildx use: buildx
dockerfile: Dockerfile.goreleaser
build_flag_templates: build_flag_templates:
- "--pull" - "--pull"
- "--platform=linux/amd64" - "--platform=linux/amd64"
@ -42,6 +43,7 @@ dockers:
extra_files: extra_files:
- health - health
use: buildx use: buildx
dockerfile: Dockerfile.goreleaser
build_flag_templates: build_flag_templates:
- "--pull" - "--pull"
- "--platform=linux/arm64" - "--platform=linux/arm64"

View file

@ -1,11 +1,26 @@
FROM golang:1.20-buster AS build
# Create build workspace folder
WORKDIR /workspace
ADD . /workspace
# Install updates and build tools
RUN apt update --yes && \
apt install --yes build-essential
# Build the actual binary
RUN make build
# -- -- -- -- -- --
# Set up image to run the tool
FROM alpine FROM alpine
# Create main app folder to run from # Create main app folder to run from
WORKDIR /app WORKDIR /app
# Copy compiled binary to release image # Copy built binary from build image
# (must build the binary before running docker build) COPY --from=build /workspace/fail2ban_exporter /app
COPY fail2ban_exporter /app/fail2ban_exporter
# Setup a healthcheck # Setup a healthcheck
COPY health /app/health COPY health /app/health

15
Dockerfile.goreleaser Normal file
View file

@ -0,0 +1,15 @@
FROM alpine
# Create main app folder to run from
WORKDIR /app
# Copy compiled binary to release image
# (must build the binary before running docker build)
COPY fail2ban_exporter /app/fail2ban_exporter
# Setup a healthcheck
COPY health /app/health
RUN apk add curl
HEALTHCHECK --interval=10s --timeout=4s --retries=3 CMD /app/health
ENTRYPOINT ["/app/fail2ban_exporter"]

View file

@ -51,5 +51,5 @@ build:
# Build project docker container # Build project docker container
.PHONY: build/docker .PHONY: build/docker
build/docker: build build/docker:
docker build -t fail2ban-prometheus-exporter . docker build -t fail2ban-prometheus-exporter .