diff --git a/README.md b/README.md index 2afceaa..88de50d 100644 --- a/README.md +++ b/README.md @@ -46,9 +46,9 @@ mysql: ## Environment Variables Supported -Any setting from https://doc.powerdns.com/authoritative/settings.html is supported. Just add the prefix "PDNS\_" and replace any hyphens (-) with underscore (\_). Example: +Any setting from https://doc.powerdns.com/authoritative/settings.html is supported. Just add the prefix "PDNSCONF\_" and replace any hyphens (-) with underscore (\_). Example: -``` allow-axfr-ips ===> PDNS_ALLOW_AXFR_IPS ``` +``` allow-axfr-ips ===> PDNSCONF_ALLOW_AXFR_IPS ``` ### Additional Environment Variables: diff --git a/pdns/Dockerfile b/pdns/Dockerfile index f049a66..801df3f 100644 --- a/pdns/Dockerfile +++ b/pdns/Dockerfile @@ -12,16 +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/* @@ -31,7 +32,6 @@ EXPOSE 53/udp 53/tcp ADD start.sh /usr/local/bin/start.sh ADD fixdsrrs.sh /usr/local/bin/fixdsrrs.sh ADD secallzones.sh /usr/local/bin/secallzones.sh -ADD schema.mysql.sql /usr/share/doc/pdns-backend-mysql/ RUN chmod a+x /usr/local/bin/*.sh CMD ["/usr/local/bin/start.sh"] diff --git a/pdns/schema.mysql.sql b/pdns/schema.mysql.sql deleted file mode 100644 index 002fe92..0000000 --- a/pdns/schema.mysql.sql +++ /dev/null @@ -1,90 +0,0 @@ -CREATE TABLE domains ( - id INT AUTO_INCREMENT, - name VARCHAR(255) NOT NULL, - master VARCHAR(128) DEFAULT NULL, - last_check INT DEFAULT NULL, - type VARCHAR(6) NOT NULL, - notified_serial INT DEFAULT NULL, - account VARCHAR(40) DEFAULT NULL, - PRIMARY KEY (id) -) Engine=InnoDB; - -CREATE UNIQUE INDEX name_index ON domains(name); - - -CREATE TABLE records ( - id INT AUTO_INCREMENT, - domain_id INT DEFAULT NULL, - name VARCHAR(255) DEFAULT NULL, - type VARCHAR(10) DEFAULT NULL, - content VARCHAR(64000) DEFAULT NULL, - ttl INT DEFAULT NULL, - prio INT DEFAULT NULL, - change_date INT DEFAULT NULL, - disabled TINYINT(1) DEFAULT 0, - ordername VARCHAR(255) BINARY DEFAULT NULL, - auth TINYINT(1) DEFAULT 1, - PRIMARY KEY (id) -) Engine=InnoDB; - -CREATE INDEX nametype_index ON records(name,type); -CREATE INDEX domain_id ON records(domain_id); -CREATE INDEX recordorder ON records (domain_id, ordername); - - -CREATE TABLE supermasters ( - ip VARCHAR(64) NOT NULL, - nameserver VARCHAR(255) NOT NULL, - account VARCHAR(40) NOT NULL, - PRIMARY KEY (ip, nameserver) -) Engine=InnoDB; - - -CREATE TABLE comments ( - id INT AUTO_INCREMENT, - domain_id INT NOT NULL, - name VARCHAR(255) NOT NULL, - type VARCHAR(10) NOT NULL, - modified_at INT NOT NULL, - account VARCHAR(40) NOT NULL, - comment VARCHAR(64000) NOT NULL, - PRIMARY KEY (id) -) Engine=InnoDB; - -CREATE INDEX comments_domain_id_idx ON comments (domain_id); -CREATE INDEX comments_name_type_idx ON comments (name, type); -CREATE INDEX comments_order_idx ON comments (domain_id, modified_at); - - -CREATE TABLE domainmetadata ( - id INT AUTO_INCREMENT, - domain_id INT NOT NULL, - kind VARCHAR(32), - content TEXT, - PRIMARY KEY (id) -) Engine=InnoDB; - -CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind); - - -CREATE TABLE cryptokeys ( - id INT AUTO_INCREMENT, - domain_id INT NOT NULL, - flags INT NOT NULL, - active BOOL, - content TEXT, - PRIMARY KEY(id) -) Engine=InnoDB; - -CREATE INDEX domainidindex ON cryptokeys(domain_id); - - -CREATE TABLE tsigkeys ( - id INT AUTO_INCREMENT, - name VARCHAR(255), - algorithm VARCHAR(50), - secret VARCHAR(255), - PRIMARY KEY (id) -) Engine=InnoDB; - -CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm); 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 }