Fábio Kaiser Rauber
9 years ago
4 changed files with 92 additions and 0 deletions
@ -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 |
||||
|
|
@ -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"] |
@ -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 |
@ -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…
Reference in new issue