|
@@ -33,12 +33,20 @@ services:
|
|
|
DB_MYSQL_NAME: 'npm'
|
|
|
# DB_SQLITE_FILE: "/data/database.sqlite"
|
|
|
# DISABLE_IPV6: "true"
|
|
|
+ # Required for DNS Certificate provisioning testing:
|
|
|
+ LE_SERVER: 'https://ca.internal/acme/acme/directory'
|
|
|
+ REQUESTS_CA_BUNDLE: '/etc/ssl/certs/NginxProxyManager.crt'
|
|
|
volumes:
|
|
|
- npm_data:/data
|
|
|
- le_data:/etc/letsencrypt
|
|
|
+ - './dev/resolv.conf:/etc/resolv.conf:ro'
|
|
|
- ../backend:/app
|
|
|
- ../frontend:/app/frontend
|
|
|
- ../global:/app/global
|
|
|
+ healthcheck:
|
|
|
+ test: ["CMD", "/usr/bin/check-health"]
|
|
|
+ interval: 10s
|
|
|
+ timeout: 3s
|
|
|
depends_on:
|
|
|
- db
|
|
|
working_dir: /app
|
|
@@ -58,6 +66,23 @@ services:
|
|
|
volumes:
|
|
|
- db_data:/var/lib/mysql
|
|
|
|
|
|
+ stepca:
|
|
|
+ image: jc21/testca
|
|
|
+ volumes:
|
|
|
+ - './dev/resolv.conf:/etc/resolv.conf:ro'
|
|
|
+ - '/etc/localtime:/etc/localtime:ro'
|
|
|
+ networks:
|
|
|
+ nginx_proxy_manager:
|
|
|
+ aliases:
|
|
|
+ - ca.internal
|
|
|
+
|
|
|
+ dnsrouter:
|
|
|
+ image: jc21/dnsrouter
|
|
|
+ volumes:
|
|
|
+ - ./dev/dnsrouter-config.json.tmp:/dnsrouter-config.json:ro
|
|
|
+ networks:
|
|
|
+ - nginx_proxy_manager
|
|
|
+
|
|
|
swagger:
|
|
|
image: swaggerapi/swagger-ui:latest
|
|
|
container_name: npm_swagger
|
|
@@ -74,12 +99,71 @@ services:
|
|
|
container_name: npm_squid
|
|
|
volumes:
|
|
|
- './dev/squid.conf:/etc/squid/squid.conf:ro'
|
|
|
+ - './dev/resolv.conf:/etc/resolv.conf:ro'
|
|
|
- '/etc/localtime:/etc/localtime:ro'
|
|
|
networks:
|
|
|
- nginx_proxy_manager
|
|
|
ports:
|
|
|
- 8128:3128
|
|
|
|
|
|
+ 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:
|
|
|
+ nginx_proxy_manager:
|
|
|
+ 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:/var/lib/mysql'
|
|
|
+ - '/etc/localtime:/etc/localtime:ro'
|
|
|
+ - './dev/pdns-db.sql:/docker-entrypoint-initdb.d/01_init.sql:ro'
|
|
|
+ networks:
|
|
|
+ - nginx_proxy_manager
|
|
|
+
|
|
|
+ cypress:
|
|
|
+ image: "npm_dev_cypress"
|
|
|
+ build:
|
|
|
+ context: ../
|
|
|
+ dockerfile: test/cypress/Dockerfile
|
|
|
+ environment:
|
|
|
+ HTTP_PROXY: 'squid:3128'
|
|
|
+ HTTPS_PROXY: 'squid:3128'
|
|
|
+ volumes:
|
|
|
+ - '../test/results:/results'
|
|
|
+ - './dev/resolv.conf:/etc/resolv.conf:ro'
|
|
|
+ - '/etc/localtime:/etc/localtime:ro'
|
|
|
+ command: cypress run --browser chrome --config-file=cypress/config/ci.js
|
|
|
+ networks:
|
|
|
+ - nginx_proxy_manager
|
|
|
+
|
|
|
volumes:
|
|
|
npm_data:
|
|
|
name: npm_core_data
|
|
@@ -87,6 +171,8 @@ volumes:
|
|
|
name: npm_le_data
|
|
|
db_data:
|
|
|
name: npm_db_data
|
|
|
+ pdns_mysql:
|
|
|
+ name: npm_pdns_mysql
|
|
|
|
|
|
networks:
|
|
|
nginx_proxy_manager:
|