PowerDNS docker container, based on Debian Buster.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

69 lines
2.0 KiB

#!/bin/bash
mkdir -p /etc/powerdns/pdns.d
PDNSVARS=`echo ${!PDNSCONF_*}`
touch /etc/powerdns/pdns.conf
if [ ! -z $MYSQL_ENV_MARIADB_DATABASE ]; then
PDNSCONF_GMYSQL_USER=$MYSQL_ENV_MARIADB_USER
PDNSCONF_GMYSQL_DBNAME=$MYSQL_ENV_MARIADB_DATABASE
PDNSCONF_GMYSQL_PASSWORD=$MYSQL_ENV_MARIADB_PASSWORD
else
PDNSCONF_GMYSQL_USER=$MYSQL_ENV_MYSQL_USER
PDNSCONF_GMYSQL_DBNAME=$MYSQL_ENV_MYSQL_DATABASE
PDNSCONF_GMYSQL_PASSWORD=$MYSQL_ENV_MYSQL_PASSWORD
fi
for var in $PDNSVARS; do
varname=`echo ${var#"PDNSCONF_"} | awk '{print tolower($0)}' | sed 's/_/-/g'`
value=`echo ${!var} | sed 's/^$\(.*\)/\1/'`
if [ ! -z ${!value} ]; then
echo "$varname=${!value}" >> /etc/powerdns/pdns.conf
else
echo "$varname=$value" >> /etc/powerdns/pdns.conf
fi
done
if [ ! -z $PDNSCONF_API_KEY ]; then
cat >/etc/powerdns/pdns.d/api.conf <<EOF
api=yes
webserver=yes
webserver-address=0.0.0.0
webserver-allow-from=0.0.0.0/0
EOF
fi
mysqlcheck() {
# Wait for MySQL to be available...
COUNTER=20
until mysql -h mysql -u $PDNSCONF_GMYSQL_USER -p$PDNSCONF_GMYSQL_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 $PDNSCONF_GMYSQL_USER -p$PDNSCONF_GMYSQL_PASSWORD -e "select count(*) from information_schema.tables where table_type='BASE TABLE' and table_schema='$PDNSCONF_GMYSQL_DBNAME';" | tail -1`
if [ "$count" == "0" ]; then
echo "Database is empty. Importing PowerDNS schema..."
mysql -h mysql -u $PDNSCONF_GMYSQL_USER -p$PDNSCONF_GMYSQL_PASSWORD $PDNSCONF_GMYSQL_DBNAME < /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