第三方软件安全-Dependency‑Track Docker 部署

目录

[1. 创建部署目录](#1. 创建部署目录)

[2. 启动服务](#2. 启动服务)

访问地址

[3. 初始化配置重点](#3. 初始化配置重点)

[4. SBOM 上传示例(curl)](#4. SBOM 上传示例(curl))

[5. 常用运维命令](#5. 常用运维命令)

[6. 常见坑点](#6. 常见坑点)

[7. 离线环境说明](#7. 离线环境说明)


Dependency‑Track 是 SBOM 组件漏洞分析工具,官方推荐 docker-compose 一键部署,包含:API 服务、前端、PostgreSQL 数据库。

环境要求

  • Docker & Docker Compose V2
  • 内存建议 ≥4G(扫描依赖、NVD 漏洞库同步很吃内存)
  • 磁盘预留 ≥20G(漏洞库、SBOM 报告存储)

1. 创建部署目录

bash 复制代码
mkdir -p /opt/dependency-track
cd /opt/dependency-track

新建 docker-compose.yml

复制代码
services:
  dtrack-apiserver:
    image: dependencytrack/apiserver:latest
    container_name: dtrack-apiserver
    restart: always
    volumes:
      - ./data:/data
    environment:
      - ALPINE_DATABASE_MODE=external
      - ALPINE_DATABASE_URL=jdbc:postgresql://dtrack-db:5432/dtrack
      - ALPINE_DATABASE_USERNAME=dtrack
      - ALPINE_DATABASE_PASSWORD=dtrack@Passw0rd
      - ALPINE_SECRET_KEY=SuperSecretKey-ChangeMe-12345678
      # 漏洞源代理(内网环境配置)
      # - HTTP_PROXY=http://192.168.x.x:8080
      # - HTTPS_PROXY=http://192.168.x.x:8080
    ports:
      - "8081:8080"
    depends_on:
      dtrack-db:
        condition: service_healthy

  dtrack-frontend:
    image: dependencytrack/frontend:latest
    container_name: dtrack-frontend
    restart: always
    ports:
      - "8080:8080"
    environment:
      - API_BASE_URL=http://dtrack-apiserver:8080
    depends_on:
      - dtrack-apiserver

  dtrack-db:
    image: postgres:15-alpine
    container_name: dtrack-db
    restart: always
    volumes:
      - ./postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=dtrack
      - POSTGRES_USER=dtrack
      - POSTGRES_PASSWORD=dtrack@Passw0rd
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U dtrack -d dtrack"]
      interval: 10s
      timeout: 5s
      retries: 5

⚠️ 生产务必修改: ALPINE_DATABASE_PASSWORD、ALPINE_SECRET_KEY,不要使用示例密码。

2. 启动服务

bash 复制代码
docker compose up -d

查看日志

bash 复制代码
# 看api服务日志,初始化漏洞库时间很久
docker logs -f dtrack-apiserver

访问地址

  • Web 前端:http://服务器IP:8080
  • API 接口:http://服务器IP:8081

默认账号密码

复制代码
用户名:admin
密码:admin

登录第一件事修改 admin 密码。

3. 初始化配置重点

  1. 漏洞数据源同步 登录后进入 Administration → Settings,漏洞源:NVD、OSV、GitHub Advisory Database。 首次同步漏洞库耗时几十分钟,不要重启容器。
  2. API KeyAdministration → Access Keys 创建 key,用于 CI 流水线上传 SBOM。

4. SBOM 上传示例(curl)

生成 SBOM 可以用 cyclonedx-maven、cyclonedx-python 等工具。

bash 复制代码
curl -X POST "http://127.0.0.1:8081/api/v1/bom" \
-H "X-API-Key:你的AccessKey" \
-F "project=项目UUID" \
-F "bom=@./bom.json"

5. 常用运维命令

bash 复制代码
# 停止
docker compose down

# 停止并清理数据(谨慎!)
docker compose down -v

# 升级版本
cd /opt/dependency-track
docker compose pull
docker compose up -d

6. 常见坑点

  1. 服务启动慢:apiserver 第一次启动会初始化数据库 + 拉取 NVD 漏洞库,内存低于 4G 会卡死 OOM。
  2. 前端打不开 :检查 API_BASE_URL,容器内部网络要能访问 apiserver。
  3. 漏洞同步失败 :服务器外网不通,配置HTTP_PROXY代理;内网环境可离线导入 NVD 数据。
  4. PostgreSQL 版本:官方推荐 postgres14~15,不要用 17 高版本。
  5. 数据持久化:./data 和 ./postgres 目录是全部数据,备份直接备份这两个文件夹。

7. 离线环境说明

内网无法访问外网漏洞源:

  1. 在外网机器下载 NVD/OSV 数据;
  2. Dependency‑Track 支持离线镜像导入漏洞数据库;
  3. SBOM 文件可以本地生成后手动页面上传。
相关推荐
骑着蜗牛撵大象3274 小时前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm
Sinokap5 小时前
OpenAI 披露 AI 安全实验:智能体如何突破隔离边界?
人工智能·安全
是真的小外套6 小时前
网络安全实战第14期:Week2周末闯关
网络·安全·web安全
废柴程序员_熊熊9 小时前
10 分钟用 Docker 搭一套私有 Gitea:HTTPS、SSH、CI、备份一次配齐
docker
Alsn8611 小时前
frp内网穿透实操(Kali NAT 环境 · 附原理说明)
安全
MaAidan11 小时前
AI 交付前的质量门禁:复杂度、分层、安全配置、测试,一个都不能少
人工智能·安全
由你创机器人13 小时前
具身智能机器人定制交付、安全设计与验收落地要点
安全·机器人
Blockbuater_drug13 小时前
Dify 1.18 本地部署实战:Windows + WSL2 + Docker,从零跑到本地可用
windows·docker·容器·dify·大模型应用平台
shangjian00713 小时前
K8S学习-基础组件
学习·容器·kubernetes
Zadig13 小时前
从 Claude Code 投毒到币安入侵:高权限 DevOps 终端,正在成为黑客突破口
安全·devops