# WARNING: This is a CI docker-compose file used for building
# and testing of the entire app, it should not be used for production.
services:

  fullstack:
    image: "${IMAGE}:${BRANCH_LOWER}-ci-${BUILD_NUMBER}"
    environment:
      NPM_DB_DRIVER: 'sqlite'
      NPM_LOG_LEVEL: 'debug'
      NPM_LOG_FORMAT: 'json'
      NPM_DISABLE_IPV6: 'true'
    volumes:
      - '/etc/localtime:/etc/localtime:ro'
      - 'npm_data_ci:/data'
      - '../docs:/temp-docs'
      - './dev/resolv.conf:/etc/resolv.conf:ro'
    networks:
      default:
        aliases:
          - website1.example.com
          - website2.example.com
          - website3.example.com

  stepca:
    image: jc21/testca
    volumes:
      - ./dev/resolv.conf:/etc/resolv.conf:ro
      - '/etc/localtime:/etc/localtime:ro'
    networks:
      default:
        aliases:
          - ca.internal

  pdns:
    image: pschiffe/pdns-mysql
    volumes:
      - '/etc/localtime:/etc/localtime:ro'
    environment:
      PDNS_master: 'yes'
      PDNS_api: 'yes'
      PDNS_api_key: 'npm'
      PDNS_webserver: 'yes'
      PDNS_webserver_address: '0.0.0.0'
      PDNS_webserver_password: 'npm'
      PDNS_webserver-allow-from: '127.0.0.0/8,192.0.0.0/8,10.0.0.0/8,172.0.0.0/8'
      PDNS_version_string: 'anonymous'
      PDNS_default_ttl: 1500
      PDNS_allow_axfr_ips: '127.0.0.0/8,192.0.0.0/8,10.0.0.0/8,172.0.0.0/8'
      PDNS_gmysql_host: pdns-db
      PDNS_gmysql_port: 3306
      PDNS_gmysql_user: pdns
      PDNS_gmysql_password: pdns
      PDNS_gmysql_dbname: pdns
    depends_on:
      - pdns-db
    networks:
      default:
        aliases:
          - ns1.pdns
          - ns2.pdns

  pdns-db:
    image: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: 'pdns'
      MYSQL_DATABASE: 'pdns'
      MYSQL_USER: 'pdns'
      MYSQL_PASSWORD: 'pdns'
    volumes:
      - 'pdns_mysql_vol:/var/lib/mysql'
      - '/etc/localtime:/etc/localtime:ro'
      - './dev/pdns-db.sql:/docker-entrypoint-initdb.d/01_init.sql:ro'

  dnsrouter:
    image: jc21/dnsrouter
    volumes:
      - ./dev/dnsrouter-config.json.tmp:/dnsrouter-config.json:ro
    entrypoint: /dnsrouter -v -c /dnsrouter-config.json

  cypress:
    image: "${IMAGE}-cypress:ci-${BUILD_NUMBER}"
    build:
      context: ../
      dockerfile: test/cypress/Dockerfile
    environment:
      CYPRESS_baseUrl: 'http://fullstack:81'
      CYPRESS_stack: 'sqlite'
    volumes:
      - 'cypress_logs:/results'
      - './dev/resolv.conf:/etc/resolv.conf:ro'
    command: cypress run --browser chrome --config-file=cypress/config/ci.js

volumes:
  cypress_logs:
  npm_data_ci:
  pdns_mysql_vol:
