diff --git a/Dockerfile-builder b/Dockerfile-builder new file mode 100644 index 00000000..6dd8283d --- /dev/null +++ b/Dockerfile-builder @@ -0,0 +1,23 @@ +FROM alpine:3.13.6 + +RUN apk add --no-cache --virtual .build-deps bash gcc musl-dev openssl go + +RUN wget -O go.tgz https://dl.google.com/go/go1.17.1.linux-amd64.tar.gz + +RUN tar -C /usr/local -xzf go.tgz + +WORKDIR /usr/local/go/src + +RUN chmod +x make.bash + +RUN ./make.bash + +ENV PATH="/usr/local/go/bin:$PATH" + +ENV GOPATH=/opt/go/ + +ENV PATH=$PATH:$GOPATH/bin + +RUN apk del .build-deps + +RUN apk add build-base diff --git a/Dockerfile-netmaker-slim b/Dockerfile-netmaker-slim new file mode 100644 index 00000000..13570c18 --- /dev/null +++ b/Dockerfile-netmaker-slim @@ -0,0 +1,36 @@ +#first stage - builder +FROM gravitl/builder as builder + +WORKDIR /app + +COPY . . + +ENV GO111MODULE=auto + +RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=1 /usr/local/go/bin/go build -ldflags="-w -s" -o netmaker main.go + +WORKDIR /app/netclient + + +RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=1 /usr/local/go/bin/go build -ldflags="-w -s" -o netclient main.go +#second stage + +FROM alpine:3.13.6 +# add glib support daemon manager +RUN apk add gcompat iptables +# set the working directory +WORKDIR /root/ + +RUN mkdir /etc/netclient + +COPY --from=builder /app/netmaker . +COPY --from=builder /app/config config +COPY --from=builder /app/netclient/netclient /etc/netclient/netclient +COPY --from=builder /app/scripts/daemon.sh . + +EXPOSE 8081 +EXPOSE 50051 +RUN touch /etc/netclient/netclient.logs +RUN sh daemon.sh + +ENTRYPOINT ["./netmaker"] diff --git a/Dockerfile-netmaker-slim-solo b/Dockerfile-netmaker-slim-solo new file mode 100644 index 00000000..03f120dd --- /dev/null +++ b/Dockerfile-netmaker-slim-solo @@ -0,0 +1,26 @@ +FROM gravitl/builder:latest as builder +# add glib support daemon manager +WORKDIR /app + +COPY . . + +ENV GO111MODULE=auto + +RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=1 /usr/local/go/bin/go build -ldflags="-w -s" -o netmaker main.go + +FROM alpine:3.13.6 + +RUN apk add gcompat +# set the working directory +WORKDIR /root/ + +COPY --from=builder /app/netmaker . +COPY --from=builder /app/config . + +RUN mkdir -p config/dnsconfig +RUN touch config/dnsconfig/Corefile && touch config/dnsconfig/netmaker.hosts + +EXPOSE 8081 +EXPOSE 50051 + +ENTRYPOINT ["./netmaker"] diff --git a/scripts/daemon.sh b/scripts/daemon.sh new file mode 100644 index 00000000..69fe0d3e --- /dev/null +++ b/scripts/daemon.sh @@ -0,0 +1,4 @@ +while [ 1 ]; do + /etc/netclient/netclient checkin -n all >> /etc/netclient/netclient.logs 2&1> + sleep 15 +done & diff --git a/serverctl/serverctl.go b/serverctl/serverctl.go index fc99d4ce..158462f8 100644 --- a/serverctl/serverctl.go +++ b/serverctl/serverctl.go @@ -134,7 +134,7 @@ func AddNetwork(network string) (bool, error) { } functions.PrintUserLog(models.NODE_SERVER_NAME, "executing network join: "+netclientPath+"netclient "+"join "+"-t "+token+" -name "+models.NODE_SERVER_NAME+" -endpoint "+pubip, 0) - joinCMD := exec.Command(netclientPath+"netclient", "join", "-t", token, "-name", models.NODE_SERVER_NAME, "-endpoint", pubip) + joinCMD := exec.Command(netclientPath+"netclient", "join", "-t", token, "-name", models.NODE_SERVER_NAME, "-endpoint", pubip, "-daemon", "off") joinCMD.Stdout = os.Stdout joinCMD.Stderr = os.Stderr err = joinCMD.Start()