From e82621e1530ce08078baf6d21a9577cdb99f4bb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20B=C3=B6hm?= Date: Sun, 25 Dec 2016 23:09:05 +0100 Subject: [PATCH] First partial working docker setup add initial version of docker setup add configuration via environment variables remove override file support docker-compose.override.yml add up2date pdns container --- .gitignore | 5 ++-- docker/ddns/Dockerfile | 3 +++ docker/docker-compose.yml | 43 +++++++++++++++++++++++++++++++++++ docker/powerdns/Dockerfile | 20 ++++++++++++++++ docker/powerdns/entrypoint.sh | 9 ++++++++ docker/powerdns/pdns.conf | 8 +++++++ docker/web/Dockerfile | 6 +++++ web/web.go | 2 +- 8 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 docker/ddns/Dockerfile create mode 100644 docker/docker-compose.yml create mode 100644 docker/powerdns/Dockerfile create mode 100644 docker/powerdns/entrypoint.sh create mode 100644 docker/powerdns/pdns.conf create mode 100644 docker/web/Dockerfile diff --git a/.gitignore b/.gitignore index 621dce7..00090a6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ *.swp -pdns.conf -pdns_backend.py -ddns +/docker/docker-compose.override.yml +/ddns dump.rdb diff --git a/docker/ddns/Dockerfile b/docker/ddns/Dockerfile new file mode 100644 index 0000000..936e5fd --- /dev/null +++ b/docker/ddns/Dockerfile @@ -0,0 +1,3 @@ +FROM golang:1.7-onbuild + +CMD ["/bin/true"] diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..de8e4aa --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,43 @@ +version: '2' + +volumes: + ddns: + +services: + ddns: + restart: unless-stopped + build: + context: .. + dockerfile: docker/ddns/Dockerfile + volumes: + - ddns:/go/bin/ + + ddns-web: + restart: unless-stopped + build: + context: web/ + dockerfile: Dockerfile + depends_on: + - redis + volumes_from: + - ddns + environment: + DDNS_DOMAIN: d.example.net + + ddns-powerdns: + restart: unless-stopped + build: + context: powerdns/ + dockerfile: Dockerfile + depends_on: + - redis + volumes_from: + - ddns + environment: + DDNS_DOMAIN: d.example.net + DDNS_SOA_DOMAIN: soa.example.net + DDNS_VERBOSE: --verbose + + redis: + restart: unless-stopped + image: redis:latest \ No newline at end of file diff --git a/docker/powerdns/Dockerfile b/docker/powerdns/Dockerfile new file mode 100644 index 0000000..af138e5 --- /dev/null +++ b/docker/powerdns/Dockerfile @@ -0,0 +1,20 @@ +FROM buildpack-deps:jessie-scm +MAINTAINER Philipp Böhm + +# the setup procedure according to https://repo.powerdns.com/ (Debian 8 Jessie) +RUN echo "deb http://repo.powerdns.com/debian jessie-auth-40 main" > /etc/apt/sources.list.d/pdns.list \ + && echo "Package: pdns-*\nPin: origin repo.powerdns.com\nPin-Priority: 600\n" >> /etc/apt/preferences.d/pdns \ + && curl https://repo.powerdns.com/FD380FBB-pub.asc | apt-key add - \ + && apt-get -y update \ + && apt-get install -y pdns-server pdns-backend-pipe \ + && rm -rf /var/lib/apt/lists/* + +COPY pdns.conf /etc/powerdns/pdns.conf + +COPY entrypoint.sh / +RUN chmod +x /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] + +EXPOSE 53 + +CMD ["pdns_server", "--daemon=no"] \ No newline at end of file diff --git a/docker/powerdns/entrypoint.sh b/docker/powerdns/entrypoint.sh new file mode 100644 index 0000000..3070000 --- /dev/null +++ b/docker/powerdns/entrypoint.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +CONFIG_FILE=/etc/powerdns/pdns.conf + +sed -i 's/{{DDNS_DOMAIN}}/'"${DDNS_DOMAIN}"'/g' ${CONFIG_FILE} +sed -i 's/{{DDNS_SOA_DOMAIN}}/'"${DDNS_SOA_DOMAIN}"'/g' ${CONFIG_FILE} +sed -i 's/{{DDNS_VERBOSE}}/'"${DDNS_VERBOSE}"'/g' ${CONFIG_FILE} + +exec "$@" \ No newline at end of file diff --git a/docker/powerdns/pdns.conf b/docker/powerdns/pdns.conf new file mode 100644 index 0000000..5e209f9 --- /dev/null +++ b/docker/powerdns/pdns.conf @@ -0,0 +1,8 @@ +disable-tcp=yes +cache-ttl=0 +loglevel=7 +log-dns-details=yes +disable-axfr=yes + +launch=pipe +pipe-command=/go/bin/app --domain={{DDNS_DOMAIN}} --soa_fqdn={{DDNS_SOA_DOMAIN}} --redis=redis:6379 {{DDNS_VERBOSE}} backend \ No newline at end of file diff --git a/docker/web/Dockerfile b/docker/web/Dockerfile new file mode 100644 index 0000000..8c4e53c --- /dev/null +++ b/docker/web/Dockerfile @@ -0,0 +1,6 @@ +FROM buildpack-deps:jessie-scm +MAINTAINER Philipp Böhm + +ENV GIN_MODE release + +CMD /go/bin/app --domain=${DDNS_DOMAIN} --redis=redis:6379 web diff --git a/web/web.go b/web/web.go index 66df140..a31bd0a 100644 --- a/web/web.go +++ b/web/web.go @@ -4,7 +4,7 @@ import ( "../config" "../hosts" "fmt" - "github.com/gin-gonic/gin" + "gopkg.in/gin-gonic/gin.v1" "html/template" "log" "net"