Файл docker-compose для запуска Dependency-Track
Опубликовано:
В этой инструкции мы разберем небольшой пример docker-compose файла, который поможет запустить панель Dependency-Track для поиска уязвимостей в зависимостях проекта.
За основу мы возьмем сценарий, доступный на официальном сайте, а также на Github.
Пример файла docker-compose
Создадим каталог для хранения файлов сервера и перейдем в него:
mkdir /opt/dtrack && cd /opt/dtrack
Создадим docker-compose файл:
vi docker-compose.yml
name: dtrack
services:
traefik:
image: traefik:${TRAEFIK_VER}
container_name: traefik
restart: unless-stopped
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
- "--providers.file.directory=/etc/traefik/dynamic"
- "--providers.file.watch=true"
- "--ping=true"
environment:
TZ: ${TZONE}
DOCKER_API_VERSION: 1.45
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik/config:/etc/traefik/dynamic:ro
- /etc/pki/tls/certs:/certs:ro
healthcheck:
test: ["CMD-SHELL", "traefik healthcheck --ping"]
interval: 10s
timeout: 5s
retries: 3
start_period: 5s
apiserver:
image: ghcr.io/dependencytrack/apiserver:${DT_VER}
container_name: dtrack-apiserver
hostname: apiserver
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
deploy:
resources:
limits:
memory: 2g
environment:
TZ: ${TZONE}
DT_DATASOURCE_URL: "jdbc:postgresql://postgres:5432/${DB_NAME}"
DT_DATASOURCE_USERNAME: "${DB_USER}"
DT_DATASOURCE_PASSWORD: "${DB_PASS}"
labels:
- "traefik.enable=true"
- "traefik.http.routers.dtrack-back.rule=Host(`${DOMAIN}`) && PathPrefix(`/api/`)"
- "traefik.http.routers.dtrack-back.entrypoints=websecure"
- "traefik.http.routers.dtrack-back.tls=true"
- "traefik.http.services.dtrack-back.loadbalancer.server.port=8080"
volumes:
- ./api/data:/data
frontend:
image: ghcr.io/dependencytrack/frontend:${DT_VER}
container_name: dtrack-frontend
hostname: frontend
restart: unless-stopped
environment:
TZ: ${TZONE}
API_BASE_URL: "https://${DOMAIN}/api"
labels:
- "traefik.enable=true"
- "traefik.http.routers.dtrack-front.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.dtrack-front.entrypoints=websecure"
- "traefik.http.routers.dtrack-front.tls=true"
- "traefik.http.services.dtrack-front.loadbalancer.server.port=8080"
healthcheck:
test: ["CMD-SHELL", "curl -f http://127.0.0.1:8080"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
postgres:
image: postgres:${DB_VER}
container_name: dtrack-postgres
hostname: postgres
restart: unless-stopped
environment:
TZ: ${TZONE}
POSTGRES_DB: "${DB_NAME}"
POSTGRES_USER: "${DB_USER}"
POSTGRES_PASSWORD: "${DB_PASS}"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 3s
retries: 3
volumes:
- ./postgres/data:/var/lib/postgresql
Настройка и запуск
В сценарии используются переменные. Для их определения создаем файл:
vi .env
TZONE=Europe/Moscow
DOMAIN=dtrack.dmosk.ru
TRAEFIK_VER=v3.6
DT_VER=5.0.2
DB_VER=18-alpine
DB_NAME=dtrack
DB_USER=dtrack
DB_PASS=dtrack12345
* актуальную версию для Dependency-Track (DT_VER) можно посмотреть на Dockerhub.
Запускаем наши контейнеры командой:
docker-compose up -d
Периодически выполняем команду:
docker-compose ps
Мы должны дождаться состояния (healthy) для всех контейнеров. После можно переходить на портал по адресу https://<домен портала> (в нашем примере, dtrack.dmosk.ru). Должна открыться страница аутентификации. Вводим admin / admin для входа.