Merge pull request #39 from qdm12/master

Dockerize the app!
This commit is contained in:
Francesco Cogno 2020-08-17 13:24:52 +02:00 committed by GitHub
commit 392c80eb1b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 50 additions and 0 deletions

13
.dockerignore Normal file
View file

@ -0,0 +1,13 @@
.git
.github
extra
_config.yml
.dockerignore
.gitignore
Dockerfile
example.json
LICENSE
README.md
/target
**/*.rs.bk
*.vim

28
Dockerfile Normal file
View file

@ -0,0 +1,28 @@
ARG ALPINE_VERSION=3.12
ARG RUST_VERSION=1-alpine${ALPINE_VERSION}
FROM rust:${RUST_VERSION} AS build
WORKDIR /usr/src/prometheus_wireguard_exporter
# Setup
ARG ARCH=x86_64
RUN apk add --update -q --no-cache musl-dev
RUN rustup target add ${ARCH}-unknown-linux-musl
# Install dependencies
COPY Cargo.toml Cargo.lock ./
RUN mkdir src && \
echo "fn main() {}" > src/main.rs
RUN cargo build --release && \
rm -rf target/release/deps/prometheus_wireguard_exporter*
# Build the musl linked binary
COPY . .
RUN cargo build --release
RUN cargo install --target ${ARCH}-unknown-linux-musl --path .
FROM alpine:${ALPINE_VERSION}
EXPOSE 9586/tcp
RUN apk add --update -q --no-cache wireguard-tools-wg
COPY --from=build /usr/local/cargo/bin/prometheus_wireguard_exporter /usr/local/bin/prometheus_wireguard_exporter
ENTRYPOINT [ "prometheus_wireguard_exporter" ]

View file

@ -29,6 +29,15 @@ A Prometheus exporter for [WireGuard](https://www.wireguard.com), written in Rus
* You need [Rust](https://www.rust-lang.org/) to compile this code. Simply follow the instructions on Rust's website to install the toolchain. If you get weird errors while compiling please try and update your Rust version first (I have developed it on `rustc 1.42.0 (b8cedc004 2020-03-09)`). * You need [Rust](https://www.rust-lang.org/) to compile this code. Simply follow the instructions on Rust's website to install the toolchain. If you get weird errors while compiling please try and update your Rust version first (I have developed it on `rustc 1.42.0 (b8cedc004 2020-03-09)`).
* You need [WireGuard](https://www.wireguard.com) *and* the `wg` CLI in the path. The tool will call `wg show <interface(s)>|all dump` and of course will fail if the `wg` executable is not found. If you want I can add the option of specifying the `wg` path in the command line, just open an issue for it. * You need [WireGuard](https://www.wireguard.com) *and* the `wg` CLI in the path. The tool will call `wg show <interface(s)>|all dump` and of course will fail if the `wg` executable is not found. If you want I can add the option of specifying the `wg` path in the command line, just open an issue for it.
Alternatively, as long as you have Wireguard on your host kernel with some Wireguard interfaces running, you can use Docker. For example:
```sh
docker build -t prometheusWireguardExporter https://github.com/mindflavor/prometheus_wireguard_exporter
docker run -it --rm --init --net=host --cap-add=NET_ADMIN prometheusWireguardExporter
# Check it's up
docker run -it --rm alpine:3.12 wget -qO- http://localhost:9586/metrics
```
## Compilation ## Compilation
To compile the latest master version: To compile the latest master version: