Files
dependency-track/docker-compose.yml

65 lines
2.4 KiB
YAML

# Convention de nommage : user-project-branch (ex: syoul-dtrack-main)
# Permet plusieurs instances en parallele (prod/staging) sans collision
name: ${COMPOSE_PROJECT_NAME:-syoul-dtrack-main}
services:
apiserver:
image: dependencytrack/apiserver:4.14.0
container_name: ${COMPOSE_PROJECT_NAME:-syoul-dtrack-main}-apiserver
restart: always
environment:
# Stockage H2 interne — suffisant pour une team, pas de PostgreSQL requis
# Les deux formes sont supportees selon la version (< 4.12 vs >= 4.12)
ALPINE_DATABASE_MODE: internal
ALPINE_DATA_DIRECTORY: /data
EXTRA_JAVA_OPTIONS: "-Xmx4g"
volumes:
- dtrack_data:/data
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://localhost:8080/api/version || curl -sf http://localhost:8080/api/version"]
interval: 30s
timeout: 10s
retries: 10
start_period: 180s # 4.14.0 peut prendre jusqu'a 3 min au premier demarrage
networks:
- dtrack-net
- sonic
labels:
# Registrator enregistre le service dans Consul via le reseau "sonic"
# Fabio route /api/* vers l'apiserver (prioritaire sur le catch-all frontend)
- SERVICE_8080_NAME=${SERVICE_8080_APISERVER_NAME:-${COMPOSE_PROJECT_NAME}-apiserver-8080}
- SERVICE_8080_TAGS=${SERVICE_8080_APISERVER_TAGS:-urlprefix-${DTRACK_DOMAIN}/api/*}
- SERVICE_8080_CHECK_TCP=true
# sonic-acme-1 emet le cert TLS detecte automatiquement par Fabio via SNI
- LETSENCRYPT_HOST=${DTRACK_DOMAIN}
frontend:
image: dependencytrack/frontend:4.14.0
container_name: ${COMPOSE_PROJECT_NAME:-syoul-dtrack-main}-frontend
restart: always
environment:
# URL de l'apiserver vue depuis le navigateur (HTTPS public)
API_BASE_URL: https://${DTRACK_DOMAIN}
depends_on:
apiserver:
condition: service_healthy
networks:
- dtrack-net
- sonic
labels:
# Catch-all /* : doit etre enregistre apres /api/* pour que Fabio priorise l'apiserver
- SERVICE_8080_NAME=${SERVICE_8080_FRONTEND_NAME:-${COMPOSE_PROJECT_NAME}-frontend-8080}
- SERVICE_8080_TAGS=${SERVICE_8080_FRONTEND_TAGS:-urlprefix-${DTRACK_DOMAIN}/*}
- SERVICE_8080_CHECK_TCP=true
volumes:
dtrack_data:
networks:
dtrack-net:
# Reseau interne isole apiserver <-> frontend
driver: bridge
sonic:
# Reseau externe partage avec Registrator/Consul/Fabio
external: true