第三方软件安全-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_PASSWORDALPINE_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 文件可以本地生成后手动页面上传。
相关推荐
虎头金猫14 小时前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS15 小时前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
龙亘川16 小时前
一网统管AI平台民生业务实践:基于城市数字底座赋能公积金业务服务升级
大数据·安全·智慧城市·开源软件·数据可视化·政务
kybs199117 小时前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
玉&心17 小时前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing17 小时前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
赵文宇(温玉)18 小时前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang18 小时前
上传本地镜像到harbor中
docker·容器·持续部署
羑悻的小杀马特18 小时前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作