Files
Deep-Package-Inspection/docker-compose.yml
T

116 lines
3.6 KiB
YAML

version: '3.8'
# ═══════════════════════════════════════════════════════════════
# BackOne DPI — Docker Compose
#
# Arsitektur 2 Kelompok Container:
#
# [Container Group 1 — INFRA] (network: backone-infra)
# backone_mongodb : MongoDB database (port 27017)
# backone_proxy : Proxy Server - ambil data Netify → simpan MongoDB (port 4000)
#
# [Container Group 2 — APP] (network: backone-app)
# backone_backend : Backend API - baca MongoDB → JSON REST (port 3001)
# backone_frontend : Frontend Next.js Dashboard (port 3000)
#
# MongoDB dijangkau dari KEDUA network (terhubung ke backone-infra & backone-app)
# Proxy TIDAK bisa diakses langsung dari frontend — hanya dari backend via backone-app
# ═══════════════════════════════════════════════════════════════
services:
# ─── Container Group 1: INFRA ───────────────────────────────
mongodb:
image: mongo:6.0
container_name: backone_mongodb
restart: always
ports:
- "27017:27017"
volumes:
- mongodb_data:/data/db
environment:
- MONGO_INITDB_DATABASE=backone_dpi
networks:
- backone-infra
- backone-app # backend juga bisa connect ke MongoDB
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
interval: 30s
timeout: 10s
retries: 5
start_period: 20s
proxy:
build:
context: ./proxy
container_name: backone_proxy
restart: always
ports:
- "4000:4000" # Admin/DevOps bisa akses proxy API dari host
env_file:
- .env.local
environment:
- MONGODB_URI=mongodb://mongodb:27017/backone_dpi
- PROXY_PORT=4000
# Mode 1: kumpulkan SEMUA agent (default)
# Ubah ke PROXY_COLLECT_MODE=agent dan isi PROXY_AGENT_UUID untuk mode spesifik (1 agent)
# Ubah ke PROXY_COLLECT_MODE=agents dan isi PROXY_AGENT_UUIDS untuk mode multi-agent
- PROXY_COLLECT_MODE=${PROXY_COLLECT_MODE:-all}
- PROXY_AGENT_UUID=${PROXY_AGENT_UUID:-}
- PROXY_AGENT_UUIDS=${PROXY_AGENT_UUIDS:-}
- PROXY_AGENT_DELAY_MS=${PROXY_AGENT_DELAY_MS:-5000}
- PROXY_CRON_SCHEDULE=${PROXY_CRON_SCHEDULE:-*/5 * * * *}
networks:
- backone-infra
depends_on:
mongodb:
condition: service_healthy
# ─── Container Group 2: APP ─────────────────────────────────
backend:
build:
context: ./backend
container_name: backone_backend
restart: always
ports:
- "3001:3001"
env_file:
- .env.local
environment:
- MONGODB_URI=mongodb://mongodb:27017/backone_dpi
- BACKEND_PORT=3001
- PROXY_URL=http://proxy:4000 # untuk trigger manual refresh dari dashboard
networks:
- backone-app
depends_on:
mongodb:
condition: service_healthy
frontend:
build:
context: .
container_name: backone_frontend
restart: always
ports:
- "3000:3000"
env_file:
- .env.local
environment:
- NEXT_PUBLIC_API_URL=http://localhost:3001
networks:
- backone-app
depends_on:
- backend
networks:
backone-infra:
driver: bridge
name: backone-infra
backone-app:
driver: bridge
name: backone-app
volumes:
mongodb_data:
name: backone_mongodb_data