diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 65c0655..0000000 --- a/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM ubuntu:latest -MAINTAINER Khanh Ngo "ngokhanhit@gmail.com" -ARG ENVIRONMENT=development -ENV ENVIRONMENT=${ENVIRONMENT} - -WORKDIR /powerdns-admin - -RUN apt-get update -y -RUN apt-get install -y python3-pip python3-dev supervisor - -# lib for building mysql db driver -RUN apt-get install -y libmysqlclient-dev - -# lib for buiding ldap and ssl-based application -RUN apt-get install -y libsasl2-dev libldap2-dev libssl-dev - -# lib for building python3-saml -RUN apt-get install -y libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config - -COPY ./requirements.txt /powerdns-admin/requirements.txt -RUN pip3 install -r requirements.txt - -ADD ./supervisord.conf /etc/supervisord.conf -ADD . /powerdns-admin/ -COPY ./configs/${ENVIRONMENT}.py /powerdns-admin/config.py - diff --git a/configs/development.py b/configs/development.py index 45ad679..ea78d9f 100644 --- a/configs/development.py +++ b/configs/development.py @@ -14,10 +14,10 @@ TIMEOUT = 10 UPLOAD_DIR = os.path.join(basedir, 'upload') # DATABASE CONFIG FOR MYSQL -DB_USER = 'powerdnsadmin' -DB_PASSWORD = 'powerdnsadminpassword' -DB_HOST = 'docker.for.mac.localhost' -DB_NAME = 'powerdnsadmin' +DB_HOST = os.environ.get('PDA_DB_HOST') +DB_NAME = os.environ.get('PDA_DB_NAME') +DB_USER = os.environ.get('PDA_DB_USER') +DB_PASSWORD = os.environ.get('PDA_DB_PASSWORD') #MySQL SQLALCHEMY_DATABASE_URI = 'mysql://'+DB_USER+':'+DB_PASSWORD+'@'+DB_HOST+'/'+DB_NAME @@ -106,8 +106,8 @@ SAML_LOGOUT = False # POWERDNS CONFIG -PDNS_STATS_URL = 'http://192.168.100.100:8081/' -PDNS_API_KEY = 'changeme' +PDNS_STATS_URL = 'http://{0}:8081'.format(os.environ.get('PDNS_HOST')) +PDNS_API_KEY = os.environ.get('PDNS_API_KEY') PDNS_VERSION = '4.1.1' # RECORDS ALLOWED TO EDIT diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml deleted file mode 100644 index 57b1e16..0000000 --- a/docker-compose.dev.yml +++ /dev/null @@ -1,22 +0,0 @@ -version: "2.1" - -services: - powerdns-admin: - build: - context: . - dockerfile: Dockerfile - image: powerdns-admin - container_name: powerdns-admin - mem_limit: 256M - memswap_limit: 256M - tty: true - command: /usr/bin/supervisord -c /etc/supervisord.conf - ports: - - "9191:9191" - volumes: - - .:/powerdns-admin/ - - "./configs/development.py:/powerdns-admin/config.py" - logging: - driver: json-file - options: - max-size: 50m diff --git a/docker/DOCKER.md b/docker/DOCKER.md deleted file mode 100644 index 196beba..0000000 --- a/docker/DOCKER.md +++ /dev/null @@ -1,29 +0,0 @@ -# Docker support -This is a updated version of the current docker support. -Container support is only for development purposes and should not be used in production without your own modificatins. - -It's not needed to reload the container after you make changes in your current branch. - -Images are currently not available in docker hub or other repository, so you have to build them yourself. - -After a successful launch PowerDNS-Admin is reachable at http://localhost:9393 - -PowerDNS runs op port localhost udp/5353 - - -## Basic commands: -### Build images -cd to this directory - -```# ./build-images.sh``` - -### Run containers -Build the images before you run this command. - -```# docker-compose up``` - -### Stop containers -```# docker-compose stop``` - -### Remove containers -```# docker-compose rm``` diff --git a/docker/PowerDNS-Admin/Dockerfile b/docker/PowerDNS-Admin/Dockerfile index 133b709..bb6c51f 100644 --- a/docker/PowerDNS-Admin/Dockerfile +++ b/docker/PowerDNS-Admin/Dockerfile @@ -1,42 +1,28 @@ -# PowerDNS-Admin -# Original from: -# https://github.com/ngoduykhanh/PowerDNS-Admin -# -# Initial image by winggundamth(/powerdns-mysql:trusty) -# -# -FROM alpine -MAINTAINER Jeroen Boonstra +FROM ubuntu:latest +MAINTAINER Khanh Ngo "ngokhanhit@gmail.com" +ARG ENVIRONMENT=development +ENV ENVIRONMENT=${ENVIRONMENT} -ENV APP_USER=web APP_NAME=powerdns-admin -ENV APP_PATH=/home/$APP_USER/$APP_NAME +WORKDIR /powerdns-admin +RUN apt-get update -y +RUN apt-get install -y python3-pip python3-dev supervisor -RUN apk add --update \ - sudo \ - python \ - libxml2 \ - xmlsec \ - git \ - python-dev \ - py-pip \ - build-base \ - libxml2-dev \ - xmlsec-dev \ - libffi-dev \ - openldap-dev \ - && adduser -S web +# lib for building mysql db driver +RUN apt-get install -y libmysqlclient-dev -RUN sudo -u $APP_USER -H git clone --depth=1 \ - https://github.com/thomasDOTde/PowerDNS-Admin $APP_PATH +# lib for buiding ldap and ssl-based application +RUN apt-get install -y libsasl2-dev libldap2-dev libssl-dev -RUN pip install -r $APP_PATH/requirements.txt -COPY docker-entrypoint.sh /docker-entrypoint.sh +# lib for building python3-saml +RUN apt-get install -y libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config +COPY ./requirements.txt /powerdns-admin/requirements.txt +RUN pip3 install -r requirements.txt -USER $APP_USER -WORKDIR $APP_PATH -ENTRYPOINT ["/docker-entrypoint.sh"] -CMD ["python", "run.py"] -EXPOSE 9393 -VOLUME ["/var/log"] +ADD ./supervisord.conf /etc/supervisord.conf +ADD . /powerdns-admin/ +COPY ./configs/${ENVIRONMENT}.py /powerdns-admin/config.py +COPY ./docker/PowerDNS-Admin/entrypoint.sh /entrypoint.sh + +ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker/PowerDNS-Admin/docker-entrypoint.sh b/docker/PowerDNS-Admin/docker-entrypoint.sh deleted file mode 100755 index 58daa7a..0000000 --- a/docker/PowerDNS-Admin/docker-entrypoint.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -set -e - -if [ "$WAITFOR_DB" -a ! -f "$APP_PATH/config.py" ]; then - cp "$APP_PATH/config_template_docker.py" "$APP_PATH/config.py" -fi - -cd $APP_PATH && python create_db.py - -# Start PowerDNS Admin -exec "$@" diff --git a/docker/PowerDNS-MySQL/Dockerfile b/docker/PowerDNS-MySQL/Dockerfile deleted file mode 100644 index a79ea40..0000000 --- a/docker/PowerDNS-MySQL/Dockerfile +++ /dev/null @@ -1,40 +0,0 @@ -# PowerDNS Authoritative Server with MySQL backend -# https://www.powerdns.com -# -# The PowerDNS Authoritative Server is the only solution that enables -# authoritative DNS service from all major databases, including but not limited -# to MySQL, PostgreSQL, SQLite3, Oracle, Sybase, Microsoft SQL Server, LDAP and -# plain text files. - -FROM winggundamth/ubuntu-base:trusty -MAINTAINER Jirayut Nimsaeng -ENV FROM_BASE=trusty-20160503.1 - -# 1) Add PowerDNS repository https://repo.powerdns.com -# 2) Install PowerDNS server -# 3) Clean to reduce Docker image size -ARG APT_CACHER_NG -COPY build-files /build-files -RUN [ -n "$APT_CACHER_NG" ] && \ - echo "Acquire::http::Proxy \"$APT_CACHER_NG\";" \ - > /etc/apt/apt.conf.d/11proxy || true; \ - apt-get update && \ - apt-get install -y curl && \ - curl https://repo.powerdns.com/FD380FBB-pub.asc | apt-key add - && \ - echo 'deb [arch=amd64] http://repo.powerdns.com/ubuntu trusty-auth-40 main' \ - > /etc/apt/sources.list.d/pdns-$(lsb_release -cs).list && \ - mv /build-files/pdns-pin /etc/apt/preferences.d/pdns && \ - apt-get update && \ - apt-get install -y pdns-server pdns-backend-mysql mysql-client && \ - mv /build-files/pdns.mysql.conf /etc/powerdns/pdns.d/pdns.mysql.conf && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* /etc/apt/apt.conf.d/11proxy /build-files \ - /etc/powerdns/pdns.d/pdns.simplebind.conf - -# 1) Copy Docker entrypoint script -COPY docker-entrypoint.sh /docker-entrypoint.sh - -EXPOSE 53/udp 53 8081 -VOLUME ["/var/log", "/etc/powerdns"] -ENTRYPOINT ["/docker-entrypoint.sh"] -CMD ["/usr/sbin/pdns_server", "--guardian=yes"] diff --git a/docker/PowerDNS-MySQL/build-files/pdns-pin b/docker/PowerDNS-MySQL/build-files/pdns-pin deleted file mode 100644 index 24d2bea..0000000 --- a/docker/PowerDNS-MySQL/build-files/pdns-pin +++ /dev/null @@ -1,3 +0,0 @@ -Package: pdns-* -Pin: origin repo.powerdns.com -Pin-Priority: 600 diff --git a/docker/PowerDNS-MySQL/build-files/pdns.mysql.conf b/docker/PowerDNS-MySQL/build-files/pdns.mysql.conf deleted file mode 100644 index 42a99c8..0000000 --- a/docker/PowerDNS-MySQL/build-files/pdns.mysql.conf +++ /dev/null @@ -1,6 +0,0 @@ -launch+=gmysql -gmysql-port=3306 -gmysql-host=172.17.0.1 -gmysql-password=CHANGEME -gmysql-user=powerdns -gmysql-dbname=powerdns diff --git a/docker/PowerDNS-MySQL/docker-entrypoint.sh b/docker/PowerDNS-MySQL/docker-entrypoint.sh deleted file mode 100755 index e508511..0000000 --- a/docker/PowerDNS-MySQL/docker-entrypoint.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/sh -# Author: Jirayut 'Dear' Nimsaeng -# -set -e - -PDNS_CONF_PATH="/etc/powerdns/pdns.conf" -PDNS_MYSQL_CONF_PATH="/etc/powerdns/pdns.d/pdns.mysql.conf" -PDNS_MYSQL_HOST="localhost" -PDNS_MYSQL_PORT="3306" -PDNS_MYSQL_USERNAME="powerdns" -PDNS_MYSQL_PASSWORD="$PDNS_DB_PASSWORD" -PDNS_MYSQL_DBNAME="powerdns" - -if [ -z "$PDNS_DB_PASSWORD" ]; then - echo 'ERROR: PDNS_DB_PASSWORD environment variable not found' - exit 1 -fi - -# Configure variables -if [ "$PDNS_DB_HOST" ]; then - PDNS_MYSQL_HOST="$PDNS_DB_HOST" -fi -if [ "$PDNS_DB_PORT" ]; then - PDNS_MYSQL_PORT="$PDNS_DB_PORT" -fi -if [ "$PDNS_DB_USERNAME" ]; then - PDNS_MYSQL_USERNAME="$PDNS_DB_USERNAME" -fi -if [ "$PDNS_DB_NAME" ]; then - PDNS_MYSQL_DBNAME="$PDNS_DB_NAME" -fi - -# Configure mysql backend -sed -i \ - -e "s/^gmysql-host=.*/gmysql-host=$PDNS_MYSQL_HOST/g" \ - -e "s/^gmysql-port=.*/gmysql-port=$PDNS_MYSQL_PORT/g" \ - -e "s/^gmysql-user=.*/gmysql-user=$PDNS_MYSQL_USERNAME/g" \ - -e "s/^gmysql-password=.*/gmysql-password=$PDNS_MYSQL_PASSWORD/g" \ - -e "s/^gmysql-dbname=.*/gmysql-dbname=$PDNS_MYSQL_DBNAME/g" \ - $PDNS_MYSQL_CONF_PATH - -if [ "$PDNS_SLAVE" != "1" ]; then - # Configure to be master - sed -i \ - -e "s/^#\?\smaster=.*/master=yes/g" \ - -e "s/^#\?\sslave=.*/slave=no/g" \ - $PDNS_CONF_PATH -else - # Configure to be slave - sed -i \ - -e "s/^#\?\smaster=.*/master=no/g" \ - -e "s/^#\?\sslave=.*/slave=yes/g" \ - $PDNS_CONF_PATH -fi - -if [ "$PDNS_API_KEY" ]; then - # Enable API - sed -i \ - -e "s/^#\?\sapi=.*/api=yes/g" \ - -e "s!^#\?\sapi-logfile=.*!api-logfile=/dev/stdout!g" \ - -e "s/^#\?\sapi-key=.*/api-key=$PDNS_API_KEY/g" \ - -e "s/^#\?\swebserver=.*/webserver=yes/g" \ - -e "s/^#\?\swebserver-address=.*/webserver-address=0.0.0.0/g" \ - $PDNS_CONF_PATH -fi - -if [ "$PDNS_WEBSERVER_ALLOW_FROM" ]; then - sed -i \ - "s/^#\?\swebserver-allow-from=.*/webserver-allow-from=$PDNS_WEBSERVER_ALLOW_FROM/g" \ - $PDNS_CONF_PATH -fi - - -MYSQL_COMMAND="mysql -h $PDNS_MYSQL_HOST -P $PDNS_MYSQL_PORT -u $PDNS_MYSQL_USERNAME -p$PDNS_MYSQL_PASSWORD" - -until $MYSQL_COMMAND -e ";" ; do - >&2 echo "MySQL is unavailable - sleeping" - sleep 1 -done - ->&2 echo "MySQL is up - initial database if not exists" -MYSQL_CHECK_IF_HAS_TABLE="SELECT COUNT(DISTINCT table_name) FROM information_schema.columns WHERE table_schema = '$PDNS_MYSQL_DBNAME';" -MYSQL_NUM_TABLE=$($MYSQL_COMMAND --batch --skip-column-names -e "$MYSQL_CHECK_IF_HAS_TABLE") -if [ "$MYSQL_NUM_TABLE" -eq 0 ]; then - $MYSQL_COMMAND -D $PDNS_MYSQL_DBNAME < /usr/share/doc/pdns-backend-mysql/schema.mysql.sql -fi - -# Start PowerDNS -exec "$@" diff --git a/docker/build-images.sh b/docker/build-images.sh deleted file mode 100755 index a9f759f..0000000 --- a/docker/build-images.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -IMAGES=(PowerDNS-MySQL PowerDNS-Admin) -for IMAGE in "${IMAGES[@]}" - do - echo building $(basename $IMAGE | tr '[A-Z]' '[a-z]') - cd $IMAGE - docker build -t $(basename $IMAGE | tr '[A-Z]' '[a-z]') . - cd .. -done diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml deleted file mode 100644 index a110c27..0000000 --- a/docker/docker-compose.yml +++ /dev/null @@ -1,50 +0,0 @@ -version: '2' - -services: - - powerdns-authoritative: - image: powerdns-mysql - hostname: powerdns-authoritative - depends_on: - - powerdns-authoritative-mariadb - links: - - powerdns-authoritative-mariadb:mysqldb - ports: - - 5553:53/udp - - 8081:8081 - environment: - - PDNS_DB_HOST=mysqldb - - PDNS_DB_USERNAME=root - - PDNS_DB_NAME=powerdns - - PDNS_DB_PASSWORD=PowerDNSPassword - - PDNS_API_KEY=PowerDNSAPIKey - - powerdns-authoritative-mariadb: - image: mariadb:10.1.15 - hostname: powerdns-authoritative-mariadb - environment: - - MYSQL_DATABASE=powerdns - - MYSQL_ROOT_PASSWORD=PowerDNSPassword - - powerdns-admin: - image: powerdns-admin - hostname: powerdns-admin - depends_on: - - powerdns-admin-mariadb - - powerdns-authoritative - links: - - powerdns-admin-mariadb:mysqldb - - powerdns-authoritative:powerdns-server - volumes: - - ../:/home/web/powerdns-admin - ports: - - 9393:9393 - environment: - - WAITFOR_DB=60 - - powerdns-admin-mariadb: - image: mariadb:10.1.15 - hostname: powerdns-admin-mariadb - environment: - - MYSQL_DATABASE=powerdns-admin - - MYSQL_ROOT_PASSWORD=PowerDNSAdminPassword