diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..7cfa5ab --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +pdns: + build: pdns + links: + - "mysql:mysql" + ports: + - "53:53" + - "53:53/udp" + #environment: + # - PDNS_RECURSIVE_CACHE_TTL=10 +mysql: + image: mysql + environment: + - MYSQL_ROOT_PASSWORD=mysqlrootpw + - MYSQL_DATABASE=pdns + - MYSQL_USER=pdns + - MYSQL_PASSWORD=pdnspw + diff --git a/pdns/Dockerfile b/pdns/Dockerfile new file mode 100644 index 0000000..5043034 --- /dev/null +++ b/pdns/Dockerfile @@ -0,0 +1,15 @@ +FROM debian:jessie +MAINTAINER Fabio Rauber + +ENV DEBIAN_FRONTEND="noninteractive" + +RUN apt-get update && \ + apt-get install -q -y pdns-server pdns-backend-mysql mysql-client && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +EXPOSE 53/udp 53/tcp + +ADD start.sh /usr/local/bin/start.sh +RUN chmod a+x /usr/local/bin/start.sh + +CMD ["/usr/local/bin/start.sh"] diff --git a/pdns/pdns.conf b/pdns/pdns.conf new file mode 100644 index 0000000..7c993a5 --- /dev/null +++ b/pdns/pdns.conf @@ -0,0 +1,12 @@ +launch=gmysql +gmysql-dnssec=yes +gmysql-host=db +gmysql-user=dnsaas +gmysql-dbname=dnsaas +gmysql-password=dnsaas +query-cache-ttl=0 +cache-ttl=0 +slave=yes +experimental-json-interface=yes +experimental-api-key=your-powerdns-api-key +webserver=yes diff --git a/pdns/start.sh b/pdns/start.sh new file mode 100644 index 0000000..169c3b9 --- /dev/null +++ b/pdns/start.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +mkdir -p /etc/powerdns + +cat >/etc/powerdns/pdns.conf </dev/null; do + echo "WARNING: MySQL still not up. Trying again..." + sleep 10 + let COUNTER-=1 + if [ $COUNTER -lt 1 ]; then + echo "ERROR: MySQL connection timed out. Aborting." + exit 1 + fi + done + + count=`mysql -h mysql -u $MYSQL_ENV_MYSQL_USER -p$MYSQL_ENV_MYSQL_PASSWORD -e "select count(*) from information_schema.tables where table_type='BASE TABLE' and table_schema='$MYSQL_ENV_MYSQL_DATABASE';" | tail -1` + if [ "$count" == "0" ]; then + echo "Database is empty. Importing PowerDNS schema..." + mysql -h mysql -u $MYSQL_ENV_MYSQL_USER -p$MYSQL_ENV_MYSQL_PASSWORD $MYSQL_ENV_MYSQL_DATABASE < /usr/share/doc/pdns-backend-mysql/schema.mysql.sql && echo "Import done." + fi +} + +mysqlcheck + +# Start PowerDNS +# same as /etc/init.d/pdns monitor +echo "Starting PowerDNS..." + +if [ "$#" -gt 0 ]; then + exec /usr/sbin/pdns_server "$@" +else + exec /usr/sbin/pdns_server --daemon=no --guardian=no --control-console --loglevel=9 +fi