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:
parent
31b29021c5
commit
f4d6598308
4 changed files with 36 additions and 4 deletions
|
@ -23,6 +23,7 @@ dockers:
|
|||
extra_files:
|
||||
- health
|
||||
use: buildx
|
||||
dockerfile: Dockerfile.goreleaser
|
||||
build_flag_templates:
|
||||
- "--pull"
|
||||
- "--platform=linux/amd64"
|
||||
|
@ -42,6 +43,7 @@ dockers:
|
|||
extra_files:
|
||||
- health
|
||||
use: buildx
|
||||
dockerfile: Dockerfile.goreleaser
|
||||
build_flag_templates:
|
||||
- "--pull"
|
||||
- "--platform=linux/arm64"
|
||||
|
|
21
Dockerfile
21
Dockerfile
|
@ -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
|
||||
|
||||
# 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
|
||||
# Copy built binary from build image
|
||||
COPY --from=build /workspace/fail2ban_exporter /app
|
||||
|
||||
# Setup a healthcheck
|
||||
COPY health /app/health
|
||||
|
|
15
Dockerfile.goreleaser
Normal file
15
Dockerfile.goreleaser
Normal 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"]
|
2
Makefile
2
Makefile
|
@ -51,5 +51,5 @@ build:
|
|||
|
||||
# Build project docker container
|
||||
.PHONY: build/docker
|
||||
build/docker: build
|
||||
build/docker:
|
||||
docker build -t fail2ban-prometheus-exporter .
|
||||
|
|
Loading…
Reference in a new issue