Browse Source

First working version

3.4.1
Fábio Kaiser Rauber 9 years ago
parent
commit
4f44538ed2
  1. 17
      docker-compose.yml
  2. 15
      pdns/Dockerfile
  3. 12
      pdns/pdns.conf
  4. 48
      pdns/start.sh

17
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

15
pdns/Dockerfile

@ -0,0 +1,15 @@
FROM debian:jessie
MAINTAINER Fabio Rauber <fabiorauber@gmail.com>
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"]

12
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

48
pdns/start.sh

@ -0,0 +1,48 @@
#!/bin/bash
mkdir -p /etc/powerdns
cat >/etc/powerdns/pdns.conf <<EOF
# MySQL Configuration
#
# Launch gmysql backend
launch=gmysql
# gpgsql parameters
gmysql-host=mysql
gmysql-user=$MYSQL_ENV_MYSQL_USER
gmysql-dbname=$MYSQL_ENV_MYSQL_DATABASE
gmysql-password=$MYSQL_ENV_MYSQL_PASSWORD
gmysql-dnssec=yes
EOF
mysqlcheck() {
# Wait for MySQL to be available...
COUNTER=20
until mysql -h mysql -u $MYSQL_ENV_MYSQL_USER -p$MYSQL_ENV_MYSQL_PASSWORD -e "show databases" 2>/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
Loading…
Cancel
Save