mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-11-03 17:13:33 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			269 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			269 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
# 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
 |