Dependency-Track
Software composition analysis and supply chain security.
Overview
Dependency-Track is an intelligent Software Composition Analysis (SCA) platform designed to identify, track, and reduce risk across software supply chains through continuous monitoring of third-party and open source components. The dependency-track-api serves as the core engine, processing Software Bills of Materials (SBOMs), correlating component data with vulnerability databases like the National Vulnerability Database (NVD), OSS Index, and GitHub Security Advisories, while performing license risk analysis and policy enforcement. The dependency-track-frontend provides an intuitive web interface for visualization, reporting, and management of component inventories and security findings. This PostgreSQL-backed deployment creates a comprehensive supply chain security monitoring system capable of ingesting SBOMs in CycloneDX, SPDX, and SWID formats while providing real-time vulnerability intelligence, policy violation alerts, and detailed risk metrics across your entire software portfolio. Organizations implementing DevSecOps practices, compliance teams managing software inventories, and security teams responsible for third-party risk assessment will find this stack essential for maintaining visibility into component vulnerabilities, license compliance issues, and supply chain threats throughout the software development lifecycle.
Key Features
- Multi-format SBOM ingestion supporting CycloneDX, SPDX 2.2/2.3, and SWID tag formats with automated component identification and cataloging
- Continuous vulnerability monitoring against multiple intelligence sources including NVD, OSS Index, GitHub Security Advisories, and VulnDB with real-time updates
- Component risk scoring and prioritization using CVSS metrics, EPSS probability scores, and exploitability assessments
- License risk analysis and compliance tracking with configurable policy enforcement for prohibited, restricted, and approved licenses
- Portfolio-wide vulnerability trending and metrics with executive dashboards showing risk reduction over time
- Webhook and notification integrations supporting Slack, Microsoft Teams, email alerts, and custom endpoints for policy violations
- RESTful API with comprehensive endpoints for SBOM uploads, vulnerability queries, and integration with CI/CD pipelines
- Component aging analysis identifying outdated dependencies and recommending version upgrades with security impact assessment
Common Use Cases
- 1Enterprise software composition analysis for tracking vulnerabilities across hundreds of applications and their third-party dependencies
- 2DevSecOps pipeline integration for automated SBOM analysis during CI/CD builds with build-breaking policy violations
- 3Regulatory compliance reporting for industries requiring software inventory documentation like healthcare, finance, and government contracting
- 4Vendor risk assessment programs where procurement teams evaluate third-party software components for security and licensing risks
- 5Incident response support for rapidly identifying which applications contain specific vulnerable components during security events
- 6Open source governance programs managing approved component libraries and enforcing corporate licensing policies
- 7Supply chain security monitoring for detecting newly disclosed vulnerabilities in previously approved software components
Prerequisites
- Minimum 4GB RAM allocated to Docker with 8GB recommended for organizations processing large SBOM portfolios
- PostgreSQL database storage planning with at least 10GB initial space, scaling based on component inventory size and retention policies
- Port availability for 8080 (frontend), 8081 (API), and 5432 (PostgreSQL) with firewall configurations allowing access from client networks
- Understanding of SBOM generation tools like CycloneDX CLI, Syft, or Trivy for creating software inventories from your applications
- Network connectivity for vulnerability database synchronization requiring outbound HTTPS access to NVD, OSS Index, and other intelligence sources
- Database password configuration through environment variables with secure credential management practices
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 dtrack-api: 3 image: dependencytrack/apiserver:latest4 container_name: dtrack-api5 restart: unless-stopped6 environment: 7 ALPINE_DATABASE_MODE: external8 ALPINE_DATABASE_URL: jdbc:postgresql://dtrack-db:5432/dtrack9 ALPINE_DATABASE_DRIVER: org.postgresql.Driver10 ALPINE_DATABASE_USERNAME: dtrack11 ALPINE_DATABASE_PASSWORD: ${DB_PASSWORD}12 ports: 13 - "8081:8080"14 volumes: 15 - dtrack_data:/data16 depends_on: 17 - dtrack-db1819 dtrack-frontend: 20 image: dependencytrack/frontend:latest21 container_name: dtrack-frontend22 restart: unless-stopped23 environment: 24 API_BASE_URL: http://localhost:808125 ports: 26 - "8080:8080"27 depends_on: 28 - dtrack-api2930 dtrack-db: 31 image: postgres:15-alpine32 container_name: dtrack-db33 restart: unless-stopped34 environment: 35 POSTGRES_USER: dtrack36 POSTGRES_PASSWORD: ${DB_PASSWORD}37 POSTGRES_DB: dtrack38 volumes: 39 - dtrack_db:/var/lib/postgresql/data4041volumes: 42 dtrack_data: 43 dtrack_db: .env Template
.env
1DB_PASSWORD=changemeUsage Notes
- 1Docs: https://docs.dependencytrack.org/
- 2Access at http://localhost:8080 (frontend) - default: admin/admin
- 3API at http://localhost:8081 - generate API key in UI for automation
- 4Upload SBOMs: CycloneDX (preferred), SPDX, or VEX formats
- 5Generate SBOM: cyclonedx-cli/syft/trivy for various ecosystems
- 6Policy violations and vulnerability alerts via webhooks/email
Individual Services(3 services)
Copy individual services to mix and match with your existing compose files.
dtrack-api
dtrack-api:
image: dependencytrack/apiserver:latest
container_name: dtrack-api
restart: unless-stopped
environment:
ALPINE_DATABASE_MODE: external
ALPINE_DATABASE_URL: jdbc:postgresql://dtrack-db:5432/dtrack
ALPINE_DATABASE_DRIVER: org.postgresql.Driver
ALPINE_DATABASE_USERNAME: dtrack
ALPINE_DATABASE_PASSWORD: ${DB_PASSWORD}
ports:
- "8081:8080"
volumes:
- dtrack_data:/data
depends_on:
- dtrack-db
dtrack-frontend
dtrack-frontend:
image: dependencytrack/frontend:latest
container_name: dtrack-frontend
restart: unless-stopped
environment:
API_BASE_URL: http://localhost:8081
ports:
- "8080:8080"
depends_on:
- dtrack-api
dtrack-db
dtrack-db:
image: postgres:15-alpine
container_name: dtrack-db
restart: unless-stopped
environment:
POSTGRES_USER: dtrack
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: dtrack
volumes:
- dtrack_db:/var/lib/postgresql/data
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 dtrack-api:5 image: dependencytrack/apiserver:latest6 container_name: dtrack-api7 restart: unless-stopped8 environment:9 ALPINE_DATABASE_MODE: external10 ALPINE_DATABASE_URL: jdbc:postgresql://dtrack-db:5432/dtrack11 ALPINE_DATABASE_DRIVER: org.postgresql.Driver12 ALPINE_DATABASE_USERNAME: dtrack13 ALPINE_DATABASE_PASSWORD: ${DB_PASSWORD}14 ports:15 - "8081:8080"16 volumes:17 - dtrack_data:/data18 depends_on:19 - dtrack-db2021 dtrack-frontend:22 image: dependencytrack/frontend:latest23 container_name: dtrack-frontend24 restart: unless-stopped25 environment:26 API_BASE_URL: http://localhost:808127 ports:28 - "8080:8080"29 depends_on:30 - dtrack-api3132 dtrack-db:33 image: postgres:15-alpine34 container_name: dtrack-db35 restart: unless-stopped36 environment:37 POSTGRES_USER: dtrack38 POSTGRES_PASSWORD: ${DB_PASSWORD}39 POSTGRES_DB: dtrack40 volumes:41 - dtrack_db:/var/lib/postgresql/data4243volumes:44 dtrack_data:45 dtrack_db:46EOF4748# 2. Create the .env file49cat > .env << 'EOF'50DB_PASSWORD=changeme51EOF5253# 3. Start the services54docker compose up -d5556# 4. View logs57docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/dependency-track/run | bashTroubleshooting
- Database connection failures with 'could not connect to server': Verify PostgreSQL container startup and DB_PASSWORD environment variable matches between API server and database containers
- Frontend showing 'API Server Unavailable': Check API_BASE_URL environment variable points to correct API server address and port 8081 accessibility from frontend container
- SBOM upload failures with 'unsupported format' errors: Ensure SBOM files are valid CycloneDX JSON/XML, SPDX 2.2+ JSON, or contain proper component structure with required fields
- Vulnerability data not updating with outdated CVE information: Verify outbound internet connectivity from API container and check vulnerability source configurations in administration settings
- High memory usage during vulnerability analysis: Increase Docker memory limits and consider adjusting ALPINE_DATABASE_POOL_MAX_SIZE for connection optimization
- Policy violations not triggering notifications: Confirm webhook URLs are accessible, notification rules are enabled, and policy conditions match your component criteria
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Components
dependency-track-apidependency-track-frontend
Tags
#dependency-track#sbom#security#vulnerabilities
Category
DevOps & CI/CDAd Space
Shortcuts: C CopyF FavoriteD Download