From 6c8c854d3c59397d4a5a312632a14591df504259 Mon Sep 17 00:00:00 2001 From: Dave O'Connor Date: Sun, 12 Nov 2023 16:52:23 +0000 Subject: [PATCH] Docker ENV and entrypoint changes: - Use ENV for configuration of what to do with clouddns-sync. - Use an entrypoint.sh to properly run things. - Explicit release naming in dockerfile. --- Dockerfile | 33 +++++++++++++++++++++++++-------- entrypoint.sh | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 entrypoint.sh diff --git a/Dockerfile b/Dockerfile index b1f0cb4..bdb5b4f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,29 @@ FROM golang:1.21 +RUN go install github.com/gerrowadat/clouddns-sync@0.0.6 -WORKDIR /app -COPY go.mod go.sum ./ -RUN go mod download -COPY *.go ./ +COPY entrypoint.sh / +RUN chmod +x /entrypoint.sh -# Build -RUN CGO_ENABLED=0 GOOS=linux go build -o /clouddns-sync +USER root + +# Interval between runs. +ENV GCLOUD_DNS_INTERVAL_SECS=86400 + +# gcloud specifiers +ENV GCLOUD_VERB "dynrecord" +ENV GCLOUD_DNS_ZONE "" +ENV GCLOUD_DYN_RECORD_NAME "" + +# nomad specifiers +ENV NOMAD_SERVER_URI "" +ENV NOMAD_TOKEN_FILE "" + +# json credentials file location +ENV JSON_KEYFILE "" + +# zonefile location +ENV ZONEFILENAME "" + +ENTRYPOINT ["/entrypoint.sh"] +CMD ["/entrypoint.sh"] -# Run -ENTRYPOINT ["/clouddns-sync"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..020e868 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,36 @@ +#!/usr/bin/bash + +set -e + +while true +do + echo "Doing $GCLOUD_VERB for zone $GCLOUD_DNS_ZONE" + + case $GCLOUD_VERB in + nomad_sync) + clouddns-sync \ + --cloud-dns-zone=$GCLOUD_DNS_ZONE \ + --json-keyfile=$JSON_KEYFILE \ + --nomad-server-uri=$NOMAD_SERVER_URI \ + --nomad-token_file=$NOMAD_TOKEN_FILE \ + $GCLOUD_VERB + ;; + getzonefile | putzonefile) + clouddns-sync \ + --cloud-dns-zone=$GCLOUD_DNS_ZONE \ + --json-keyfile=$JSON_KEYFILE \ + -zonefilename=$ZONEFILENAME \ + $GCLOUD_VERB + ;; + dynrecord) + clouddns-sync \ + --cloud-dns-zone=$GCLOUD_DNS_ZONE \ + --cloud-dns-dyn-record-name=$GCLOUD_DYN_RECORD_NAME \ + --json-keyfile=$JSON_KEYFILE \ + $GCLOUD_VERB + ;; + esac + + echo "Sleeping for $GCLOUD_DNS_INTERVAL_SECS seconds..." + sleep $GCLOUD_DNS_INTERVAL_SECS +done