| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- # WARNING: This is a DEVELOPMENT docker-compose file, it should not be used for production.
- services:
- fullstack:
- image: npm2dev:core
- container_name: npm2dev.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:
- TZ: "${TZ:-Australia/Brisbane}"
- 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-postgres:
- DB_POSTGRES_HOST: "pgdb.internal"
- DB_POSTGRES_PORT: "5432"
- DB_POSTGRES_USER: "npm"
- DB_POSTGRES_PASSWORD: "npmpass"
- DB_POSTGRES_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:/frontend
- - "/etc/localtime:/etc/localtime:ro"
- healthcheck:
- test: ["CMD", "/usr/bin/check-health"]
- interval: 10s
- timeout: 3s
- depends_on:
- - db
- - db-postgres
- - authentik
- - authentik-worker
- - authentik-ldap
- working_dir: /app
- db:
- image: jc21/mariadb-aria
- container_name: npm2dev.db
- ports:
- - 33306:3306
- networks:
- - nginx_proxy_manager
- environment:
- TZ: "${TZ:-Australia/Brisbane}"
- MYSQL_ROOT_PASSWORD: "npm"
- MYSQL_DATABASE: "npm"
- MYSQL_USER: "npm"
- MYSQL_PASSWORD: "npm"
- volumes:
- - db_data:/var/lib/mysql
- - "/etc/localtime:/etc/localtime:ro"
- db-postgres:
- image: postgres:17
- container_name: npm2dev.db-postgres
- environment:
- POSTGRES_USER: "npm"
- POSTGRES_PASSWORD: "npmpass"
- POSTGRES_DB: "npm"
- volumes:
- - psql_data:/var/lib/postgresql/data
- - ./ci/postgres:/docker-entrypoint-initdb.d
- networks:
- nginx_proxy_manager:
- aliases:
- - pgdb.internal
- stepca:
- image: jc21/testca
- container_name: npm2dev.stepca
- volumes:
- - "./dev/resolv.conf:/etc/resolv.conf:ro"
- - "/etc/localtime:/etc/localtime:ro"
- networks:
- nginx_proxy_manager:
- aliases:
- - ca.internal
- dnsrouter:
- image: jc21/dnsrouter
- container_name: npm2dev.dnsrouter
- volumes:
- - ./dev/dnsrouter-config.json.tmp:/dnsrouter-config.json:ro
- networks:
- - nginx_proxy_manager
- swagger:
- image: swaggerapi/swagger-ui:latest
- container_name: npm2dev.swagger
- ports:
- - 3082:80
- environment:
- URL: "http://npm:81/api/schema"
- PORT: "80"
- depends_on:
- - fullstack
- squid:
- image: ubuntu/squid
- container_name: npm2dev.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:4.8
- container_name: npm2dev.pdns
- 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
- container_name: npm2dev.pdns-db
- 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: npm2dev:cypress
- container_name: npm2dev.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
- authentik-redis:
- image: "redis:alpine"
- container_name: npm2dev.authentik-redis
- command: --save 60 1 --loglevel warning
- networks:
- - nginx_proxy_manager
- restart: unless-stopped
- healthcheck:
- test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
- start_period: 20s
- interval: 30s
- retries: 5
- timeout: 3s
- volumes:
- - redis_data:/data
- authentik:
- image: ghcr.io/goauthentik/server:2024.10.1
- container_name: npm2dev.authentik
- restart: unless-stopped
- command: server
- networks:
- - nginx_proxy_manager
- env_file:
- - ci.env
- ports:
- - 9000:9000
- depends_on:
- - authentik-redis
- - db-postgres
- authentik-worker:
- image: ghcr.io/goauthentik/server:2024.10.1
- container_name: npm2dev.authentik-worker
- restart: unless-stopped
- command: worker
- networks:
- - nginx_proxy_manager
- env_file:
- - ci.env
- depends_on:
- - authentik-redis
- - db-postgres
- authentik-ldap:
- image: ghcr.io/goauthentik/ldap:2024.10.1
- container_name: npm2dev.authentik-ldap
- networks:
- - nginx_proxy_manager
- environment:
- AUTHENTIK_HOST: "http://authentik:9000"
- AUTHENTIK_INSECURE: "true"
- AUTHENTIK_TOKEN: "wKYZuRcI0ETtb8vWzMCr04oNbhrQUUICy89hSpDln1OEKLjiNEuQ51044Vkp"
- restart: unless-stopped
- depends_on:
- - authentik
- volumes:
- npm_data:
- name: npm2dev_core_data
- le_data:
- name: npm2dev_le_data
- db_data:
- name: npm2dev_db_data
- pdns_mysql:
- name: npnpm2dev_pdns_mysql
- psql_data:
- name: npm2dev_psql_data
- redis_data:
- name: npm2dev_redis_data
- networks:
- nginx_proxy_manager:
- name: npm2dev_network
|