diff --git a/Dockerfile b/Dockerfile index 30b18f4..d09dd2e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,12 +18,16 @@ RUN CGO_ENABLED=0 GOOS=linux go build -o /gerbil # Start a new stage from scratch FROM ubuntu:22.04 AS runner -RUN apt-get update && apt-get install -y nftables iproute2 wireguard && apt-get clean +RUN apt-get update && apt-get install -y nftables && apt-get clean -WORKDIR /root/ +# Copy the pre-built binary file from the previous stage and the entrypoint script +COPY --from=builder /gerbil /usr/local/bin/ +COPY entrypoint.sh / -# Copy the pre-built binary file from the previous stage -COPY --from=builder /gerbil . +RUN chmod +x /entrypoint.sh + +# Copy the entrypoint script +ENTRYPOINT ["/entrypoint.sh"] # Command to run the executable -CMD ["./gerbil"] +CMD ["gerbil"] diff --git a/Makefile b/Makefile index 040cf93..c6c4b02 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ all: docker build -t gerbil . test: - docker run -it -p 3002:3002 -v ./config_example.json:/config/config.json --cap-add=NET_ADMIN --cap-add=SYS_MODULE gerbil ./gerbil --config /config/config.json + docker run -it -p 3002:3002 -v ./config_example.json:/config/config.json --cap-add=NET_ADMIN --cap-add=SYS_MODULE gerbil --config /config/config.json local: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o gerbil diff --git a/badger b/badger deleted file mode 100755 index c05f876..0000000 Binary files a/badger and /dev/null differ diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index e3a4d6a..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -version: '3' - -services: - gerbil: - image: gerbil - container_name: gerbil - command: ["./gerbil", "--config", "/config/gerbil.conf"] - cap_add: - - NET_ADMIN - - SYS_MODULE - ports: - - 51820:51820/udp - volumes: - - ./config_example.json:/config/config.json - restart: unless-stopped \ No newline at end of file diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..88edb6c --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# Sample from https://github.com/traefik/traefik-library-image/blob/5070edb25b03cca6802d75d5037576c840f73fdd/v3.1/alpine/entrypoint.sh + +set -e + +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then + set -- gerbil "$@" +fi + +# if our command is a valid Gerbil subcommand, let's invoke it through Gerbil instead +# (this allows for "docker run gerbil version", etc) +if gerbil "$1" --help >/dev/null 2>&1 +then + set -- gerbil "$@" +else + echo "= '$1' is not a Gerbil command: assuming shell execution." 1>&2 +fi + +exec "$@" \ No newline at end of file diff --git a/main.go b/main.go index 219a8ab..6381b8c 100644 --- a/main.go +++ b/main.go @@ -399,7 +399,7 @@ func periodicBandwidthCheck(endpoint string) { } } -func calculatePeerBandwidth() ([]PeerBandwidth, error) { +func calculatePeerBandwidth() ([]PeerBandwidth, error) { //TODO: fix this to actually only report the change in bandwidth from the last query device, err := wgClient.Device(interfaceName) if err != nil { return nil, fmt.Errorf("failed to get device: %v", err)