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:
|
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"
|
||||||
|
|
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
|
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
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
|
# 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 .
|
||||||
|
|
Loading…
Reference in a new issue