services: postgres: image: postgres:16-alpine environment: POSTGRES_USER: nexusguard POSTGRES_PASSWORD: ${DB_PASSWORD:-nexusguard} POSTGRES_DB: nexusguard volumes: - pgdata:/var/lib/postgresql/data ports: - "127.0.0.1:5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U nexusguard"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped networks: - nexusnet redis: image: redis:7-alpine volumes: - redisdata:/data ports: - "127.0.0.1:6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped networks: - nexusnet server-core: build: context: ./apps/server-core dockerfile: Dockerfile network_mode: host env_file: - .env environment: - DB_HOST=127.0.0.1 - REDIS_ADDR=127.0.0.1:6379 depends_on: postgres: condition: service_healthy redis: condition: service_healthy cap_add: - NET_ADMIN - NET_RAW restart: unless-stopped dashboard-ui: build: context: ./apps/dashboard-ui dockerfile: Dockerfile args: VITE_API_BASE_URL: ${VITE_API_BASE_URL} ports: - "${WEB_PORT:-80}:80" depends_on: - server-core restart: unless-stopped networks: - nexusnet extra_hosts: - "host.docker.internal:host-gateway" volumes: pgdata: redisdata: networks: nexusnet: driver: bridge