123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- # 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:
- 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: 'db-postgres'
- 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:/app/frontend
- - ../global:/app/global
- 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:
- MYSQL_ROOT_PASSWORD: 'npm'
- MYSQL_DATABASE: 'npm'
- MYSQL_USER: 'npm'
- MYSQL_PASSWORD: 'npm'
- volumes:
- - db_data:/var/lib/mysql
- db-postgres:
- image: postgres:latest
- container_name: npm2dev.db-postgres
- networks:
- - nginx_proxy_manager
- environment:
- POSTGRES_USER: 'npm'
- POSTGRES_PASSWORD: 'npmpass'
- POSTGRES_DB: 'npm'
- volumes:
- - psql_data:/var/lib/postgresql/data
- - ./ci/postgres:/docker-entrypoint-initdb.d
- 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
|