# WARNING: This is a DEVELOPMENT docker-compose file, it should not be used for production. services: fullstack: image: nginxproxymanager:dev container_name: npm_core build: context: ./ dockerfile: ./dev/Dockerfile ports: - 3080:80 - 3081:81 - 3443:443 networks: nginx_proxy_manager: aliases: - website1.example.com - website2.example.com - website3.example.com environment: PUID: 1000 PGID: 1000 FORCE_COLOR: 1 # specifically for dev: DEBUG: 'true' DEVELOPMENT: 'true' LE_STAGING: 'true' # db: DB_MYSQL_HOST: 'db' DB_MYSQL_PORT: '3306' DB_MYSQL_USER: 'npm' DB_MYSQL_PASSWORD: 'npm' 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 db: image: jc21/mariadb-aria container_name: npm_db ports: - 33306:3306 networks: - nginx_proxy_manager environment: MYSQL_ROOT_PASSWORD: 'npm' MYSQL_DATABASE: 'npm' MYSQL_USER: 'npm' MYSQL_PASSWORD: 'npm' 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 ports: - 3082:80 environment: URL: "http://npm:81/api/schema" PORT: '80' depends_on: - fullstack squid: image: ubuntu/squid 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 le_data: name: npm_le_data db_data: name: npm_db_data pdns_mysql: name: npm_pdns_mysql networks: nginx_proxy_manager: name: npm_network