Markus Pesch
2434615258
Adapt the Makefile and Dockerfile for a multi-stage build of the container image. It is now not anymore required to have go locally installed to build the container image. Inside the multi-stage build, the newly create make install command will be executed. The compbiled files will than be copied to a new base image with less dependencies. Further improvement would be to use instead of debian:10 scratch, because the application does not have any C dependencies (CGO_ENABLED=0). Additionally it is not possible to build the container image with alternative container runtimes like podman instead of docker. make build/container-image CONTAINER_RUNTIME=podman The used base image names are now defined as fully qualified image names (with registry host), to support local container registry mirror configurations.
20 lines
378 B
Docker
20 lines
378 B
Docker
FROM docker.io/library/golang:1.20.5-buster AS build
|
|
|
|
WORKDIR /workspace
|
|
ADD . /workspace
|
|
|
|
RUN apt update --yes && \
|
|
apt install --yes build-essential && \
|
|
make install \
|
|
PREFIX=/usr \
|
|
DESTDIR=/app \
|
|
EXECUTABLE=fail2ban_exporter
|
|
|
|
FROM docker.io/library/debian:10-slim
|
|
|
|
COPY --from=build /app /
|
|
|
|
EXPOSE 9191
|
|
|
|
ENTRYPOINT [ "/usr/bin/fail2ban_exporter" ]
|