version: "2.1"

services:
  powerdns-admin:
    build:
      context: .
      dockerfile: docker/PowerDNS-Admin/Dockerfile
      args:
        - ENVIRONMENT=${ENVIRONMENT}
    image: powerdns-admin
    container_name: powerdns-admin
    mem_limit: 256M
    memswap_limit: 256M
    ports:
      - "9191:9191"
    volumes:
      - .:/powerdns-admin/
      - "./configs/${ENVIRONMENT}.py:/powerdns-admin/config.py"
    logging:
      driver: json-file
      options:
        max-size: 50m
    networks:
      - default
    environment:
      - ENVIRONMENT=${ENVIRONMENT}
      - PDA_DB_HOST=${PDA_DB_HOST}
      - PDA_DB_NAME=${PDA_DB_NAME}
      - PDA_DB_USER=${PDA_DB_USER}
      - PDA_DB_PASSWORD=${PDA_DB_PASSWORD}
      - PDNS_HOST=${PDNS_HOST}
      - PDNS_API_KEY=${PDNS_API_KEY}
    depends_on:
      powerdns-admin-mysql:
        condition: service_healthy

  powerdns-admin-mysql:
    image: mysql/mysql-server:5.7
    hostname: ${PDA_DB_HOST}
    container_name: powerdns-admin-mysql
    mem_limit: 256M
    memswap_limit: 256M
    ports:
      - "3306:3306"
    networks:
      - default
    environment:
      - MYSQL_DATABASE=${PDA_DB_NAME}
      - MYSQL_USER=${PDA_DB_USER}
      - MYSQL_PASSWORD=${PDA_DB_PASSWORD}
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
      timeout: 10s
      retries: 5

  pdns-server:
    image: psitrax/powerdns
    hostname: ${PDNS_HOST}
    ports:
      - "53:53"
    networks:
      - default
    command: --api=yes --api-key=${PDNS_API_KEY} --webserver-address=0.0.0.0 --webserver-allow-from=0.0.0.0/0
    environment:
      - MYSQL_HOST=${PDNS_DB_HOST}
      - MYSQL_USER=${PDNS_DB_USER}
      - MYSQL_PASS=${PDNS_DB_PASSWORD}
      - PDNS_API_KEY=${PDNS_API_KEY}
      - PDNS_WEBSERVER_ALLOW_FROM=${PDNS_WEBSERVER_ALLOW_FROM}
    depends_on:
      pdns-mysql:
        condition: service_healthy

  pdns-mysql:
    image: mysql/mysql-server:5.7
    hostname: ${PDNS_DB_HOST}
    container_name: ${PDNS_DB_HOST}
    mem_limit: 256M
    memswap_limit: 256M
    ports:
      - "3307:3306"
    networks:
      - default
    environment:
      - MYSQL_DATABASE=${PDNS_DB_NAME}
      - MYSQL_USER=${PDNS_DB_USER}
      - MYSQL_PASSWORD=${PDNS_DB_PASSWORD}
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
      timeout: 10s
      retries: 5

networks:
  default:

volumes:
  powerdns-mysql-data:
