diff --git a/pdns/Dockerfile b/pdns/Dockerfile index b62888a..801df3f 100644 --- a/pdns/Dockerfile +++ b/pdns/Dockerfile @@ -12,17 +12,17 @@ ENV PDNSCONF_LAUNCH="gmysql" \ PDNSCONF_API_KEY="" \ SECALLZONES_CRONJOB="no" -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -q -y curl gnupg && \ - curl https://repo.powerdns.com/FD380FBB-pub.asc | apt-key add - +ADD https://repo.powerdns.com/FD380FBB-pub.asc /etc/apt/trusted.gpg.d/powerdns-key.asc ADD pdns.list /etc/apt/sources.list.d/pdns.list ADD pdns.preference /etc/apt/preferences.d/pdns -RUN apt-get update && \ +RUN chmod 644 /etc/apt/trusted.gpg.d/powerdns-key.asc && \ + apt-get update && \ echo "path-include /usr/share/doc/*/*.sql" >> /etc/dpkg/dpkg.cfg.d/docker && \ DEBIAN_FRONTEND=noninteractive apt-get install -q -y pdns-server pdns-backend-mysql mariadb-client && \ rm /etc/powerdns/pdns.d/*.conf && rm /etc/powerdns/*.conf && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends cron jq && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends cron curl jq && \ rm /etc/cron.daily/* && \ mkdir /var/run/pdns && \ apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/pdns/start.sh b/pdns/start.sh index 57c48ab..88935fb 100644 --- a/pdns/start.sh +++ b/pdns/start.sh @@ -5,6 +5,8 @@ mkdir -p /etc/powerdns/pdns.d PDNSVARS=`echo ${!PDNSCONF_*}` touch /etc/powerdns/pdns.conf +PDNSCONF_GMYSQL_HOST=${PDNSCONF_GMYSQL_HOST:-mysql} + if [ ! -z $MYSQL_ENV_MARIADB_DATABASE ]; then PDNSCONF_GMYSQL_USER=$MYSQL_ENV_MARIADB_USER PDNSCONF_GMYSQL_DBNAME=$MYSQL_ENV_MARIADB_DATABASE @@ -35,7 +37,7 @@ 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 + until mysql -h "$PDNSCONF_GMYSQL_HOST" -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 @@ -45,10 +47,10 @@ mysqlcheck() { 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` + count=`mysql -h "$PDNSCONF_GMYSQL_HOST" -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." + mysql -h "$PDNSCONF_GMYSQL_HOST" -u "$PDNSCONF_GMYSQL_USER" -p"$PDNSCONF_GMYSQL_PASSWORD" "$PDNSCONF_GMYSQL_DBNAME" < /usr/share/doc/pdns-backend-mysql/schema.mysql.sql && echo "Import done." fi }