build: add project dockerfile (#2)
Add a project Dockerfile to allow deploying the application in a docker container. Add a `run.sh` script to start the application in the container. Add Makefile commands to build the docker image based on the Dockerfile. Fix possible nil reference error in the `db` package.
This commit is contained in:
parent
e94143e81c
commit
9dc8dd862f
4 changed files with 30 additions and 3 deletions
10
Dockerfile
Normal file
10
Dockerfile
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# Using golang:latest instead of alpine because of issues with sqlite3
|
||||||
|
FROM golang:latest
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
COPY dist/fail2ban-prometheus-exporter_linux_amd64/fail2ban-prometheus-exporter /app
|
||||||
|
COPY docker/run.sh /app
|
||||||
|
|
||||||
|
RUN chmod +x /app/*
|
||||||
|
|
||||||
|
ENTRYPOINT /app/run.sh
|
6
Makefile
6
Makefile
|
@ -22,3 +22,9 @@ build/snapshot:
|
||||||
|
|
||||||
build/release:
|
build/release:
|
||||||
./tools/goreleaser_linux_amd64 --rm-dist --skip-publish
|
./tools/goreleaser_linux_amd64 --rm-dist --skip-publish
|
||||||
|
|
||||||
|
build/docker:
|
||||||
|
docker build -t registry.gitlab.com/hectorjsmith/fail2ban-prometheus-exporter:latest .
|
||||||
|
|
||||||
|
build/docker-tag:
|
||||||
|
docker build -t registry.gitlab.com/hectorjsmith/fail2ban-prometheus-exporter:$(shell git describe --tags) .
|
||||||
|
|
8
db/db.go
8
db/db.go
|
@ -70,8 +70,10 @@ func (db *Fail2BanDB) RunJailNameToCountQuery(query string) (map[string]int, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (db *Fail2BanDB) mustCloseStatement(stmt *sql.Stmt) {
|
func (db *Fail2BanDB) mustCloseStatement(stmt *sql.Stmt) {
|
||||||
err := stmt.Close()
|
if stmt != nil {
|
||||||
if err != nil {
|
err := stmt.Close()
|
||||||
log.Fatal(err)
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
9
docker/run.sh
Normal file
9
docker/run.sh
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#/bin/sh
|
||||||
|
|
||||||
|
# Print version to logs for debugging purposes
|
||||||
|
/app/fail2ban-prometheus-exporter -version
|
||||||
|
|
||||||
|
# Start the exporter (use exec to support graceful shutdown)
|
||||||
|
# Inspired by: https://akomljen.com/stopping-docker-containers-gracefully/
|
||||||
|
exec /app/fail2ban-prometheus-exporter \
|
||||||
|
-db /app/fail2ban.sqlite3
|
Loading…
Reference in a new issue