Skip to content
This repository has been archived by the owner on Oct 25, 2022. It is now read-only.

Ease usage with docker entrypoint and env vars #15

Merged
merged 9 commits into from
Apr 4, 2022
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 25 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,32 @@
FROM golang as builder
COPY . /go/src/github.com/vierbergenlars/bareos_exporter
FROM golang:1.18.0 as builder

RUN apt-get update \
&& apt-get install -y upx

WORKDIR /go/src/github.com/vierbergenlars/bareos_exporter
COPY . .

RUN go get -v .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o bareos_exporter .
RUN upx bareos_exporter

FROM busybox:latest

FROM busybox:1.34.1
WORKDIR /bareos_exporter
COPY --from=builder /go/src/github.com/vierbergenlars/bareos_exporter/bareos_exporter bareos_exporter
COPY entrypoint.sh /entrypoint.sh
RUN chmod u+x /entrypoint.sh

ENV PORT 9625
ENV DB_TYPE postgres
ENV DB_HOST localhost
ENV DB_PORT 5432
ENV DB_NAME bareos
ENV DB_USER bareos
ENV SSL_MODE disable
ENV ENDPOINT /metrics
ENV JOB_DAYS 7
ENV WAIT_FOR_DB 0

ENTRYPOINT ["./bareos_exporter"]
EXPOSE $port
EXPOSE $PORT
ENTRYPOINT ["/entrypoint.sh"]
CMD ["./bareos_exporter"]
33 changes: 29 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,37 @@
## [`Dockerfile`](./Dockerfile)

## Usage with [docker](https://hub.docker.com/r/vierbergenlnars/bareos_exporter)
1. Create a file containing your mysql password and mount it inside `/bareos_exporter/pw/auth`
2. **(optional)** [Overwrite](https://docs.docker.com/engine/reference/run/#env-environment-variables) default args using ENV variables
3. Run docker image as follows

1. Create a .env file containing at least your database password using `DB_PASSWORD` variable.
2. Run docker image as follows

Using default variables (expected DB_PASSWORD)
```bash
docker run --name bareos_exporter -p 9625:9625 -d vierbergenlars/bareos_exporter:latest
```

Using custom variables
```bash
docker run --name bareos_exporter -p 9625:9625 -d vierbergenlars/bareos_exporter:latest -dsn mysql://user:password@host/dbname
docker run --name bareos_exporter -p 9625:9625 -e DB_TYPE=mysql -e DB_NAME=bareos-dir -d vierbergenlars/bareos_exporter:latest
```

Using custom Docker CMD
```bash
docker run --name bareos_exporter -p 9625:9625 -d vierbergenlars/bareos_exporter:latest ./bareos_exporter -dsn 'mysql://login:password@tcp(host:port)/dbname?parseTime=true'
```

### Default variables

* `DB_TYPE` postgres
* `DB_HOST` localhost
* `DB_PORT` 5432 (postgres)
* `DB_USER` bareos
* `DB_NAME` bareos
* `SSL_MODE` disable
* `ENDPOINT` /metrics
* `JOB_DAYS` 7
* `WAIT_FOR_DB` 0

## Metrics

### Aggregated metrics for all jobs
Expand Down
16 changes: 16 additions & 0 deletions entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/env sh
#set -x

# Wait for DB (default 0)
sleep ${WAIT_FOR_DB}

# Run Dockerfile CMD
if [ "$#" -eq 1 -a "$1" == './bareos_exporter' ]; then
if [ "${DB_TYPE}" == 'postgres' ]; then
exec ./bareos_exporter -endpoint ${ENDPOINT} -job-discovery-days ${JOB_DAYS} -port ${PORT} -dsn "${DB_TYPE}://host=${DB_HOST} dbname=${DB_NAME} sslmode=${SSL_MODE} user=${DB_USER} password=${DB_PASSWORD} port=${DB_PORT} ${EXTRA_OPTS}"
else
exec ./bareos_exporter -endpoint ${ENDPOINT} -job-discovery-days ${JOB_DAYS} -port ${PORT} -dsn "${DB_TYPE}://${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_NAME}?parseTime=true"
fi
else
exec "$@"
fi