-
-
Notifications
You must be signed in to change notification settings - Fork 596
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4576 from nscuro/compose-postgres
- Loading branch information
Showing
2 changed files
with
101 additions
and
71 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,95 +4,100 @@ | |
# Dependency-Track FrontEnd | ||
##################################################### | ||
|
||
volumes: | ||
dependency-track: | ||
|
||
services: | ||
dtrack-apiserver: | ||
apiserver: | ||
image: dependencytrack/apiserver | ||
# environment: | ||
depends_on: | ||
postgres: | ||
condition: service_healthy | ||
# The Dependency-Track container can be configured using any of the | ||
# available configuration properties defined in: | ||
# https://docs.dependencytrack.org/getting-started/configuration/ | ||
# All properties are upper case with periods replaced by underscores. | ||
# | ||
# Database Properties | ||
# - ALPINE_DATABASE_MODE=external | ||
# - ALPINE_DATABASE_URL=jdbc:postgresql://postgres10:5432/dtrack | ||
# - ALPINE_DATABASE_DRIVER=org.postgresql.Driver | ||
# - ALPINE_DATABASE_USERNAME=dtrack | ||
# - ALPINE_DATABASE_PASSWORD=changeme | ||
# - ALPINE_DATABASE_POOL_ENABLED=true | ||
# - ALPINE_DATABASE_POOL_MAX_SIZE=20 | ||
# - ALPINE_DATABASE_POOL_MIN_IDLE=10 | ||
# - ALPINE_DATABASE_POOL_IDLE_TIMEOUT=300000 | ||
# - ALPINE_DATABASE_POOL_MAX_LIFETIME=600000 | ||
# ALPINE_DATABASE_MODE: "external" | ||
# ALPINE_DATABASE_URL: "jdbc:postgresql://postgres10:5432/dtrack" | ||
# ALPINE_DATABASE_DRIVER: "org.postgresql.Driver" | ||
# ALPINE_DATABASE_USERNAME: "dtrack" | ||
# ALPINE_DATABASE_PASSWORD: "changeme" | ||
# ALPINE_DATABASE_POOL_ENABLED: "true" | ||
# ALPINE_DATABASE_POOL_MAX_SIZE: "20" | ||
# ALPINE_DATABASE_POOL_MIN_IDLE: "10" | ||
# ALPINE_DATABASE_POOL_IDLE_TIMEOUT: "300000" | ||
# ALPINE_DATABASE_POOL_MAX_LIFETIME: "600000" | ||
# | ||
# Optional LDAP Properties | ||
# - ALPINE_LDAP_ENABLED=true | ||
# - ALPINE_LDAP_SERVER_URL=ldap://ldap.example.com:389 | ||
# - ALPINE_LDAP_BASEDN=dc=example,dc=com | ||
# - ALPINE_LDAP_SECURITY_AUTH=simple | ||
# - ALPINE_LDAP_BIND_USERNAME= | ||
# - ALPINE_LDAP_BIND_PASSWORD= | ||
# - ALPINE_LDAP_AUTH_USERNAME_FORMAT=%[email protected] | ||
# - ALPINE_LDAP_ATTRIBUTE_NAME=userPrincipalName | ||
# - ALPINE_LDAP_ATTRIBUTE_MAIL=mail | ||
# - ALPINE_LDAP_GROUPS_FILTER=(&(objectClass=group)(objectCategory=Group)) | ||
# - ALPINE_LDAP_USER_GROUPS_FILTER=(member:1.2.840.113556.1.4.1941:={USER_DN}) | ||
# - ALPINE_LDAP_GROUPS_SEARCH_FILTER=(&(objectClass=group)(objectCategory=Group)(cn=*{SEARCH_TERM}*)) | ||
# - ALPINE_LDAP_USERS_SEARCH_FILTER=(&(objectClass=user)(objectCategory=Person)(cn=*{SEARCH_TERM}*)) | ||
# - ALPINE_LDAP_USER_PROVISIONING=false | ||
# - ALPINE_LDAP_TEAM_SYNCHRONIZATION=false | ||
# ALPINE_LDAP_ENABLED: "true" | ||
# ALPINE_LDAP_SERVER_URL: "ldap://ldap.example.com:389" | ||
# ALPINE_LDAP_BASEDN: "dc=example,dc=com" | ||
# ALPINE_LDAP_SECURITY_AUTH: "simple" | ||
# ALPINE_LDAP_BIND_USERNAME: "" | ||
# ALPINE_LDAP_BIND_PASSWORD: "" | ||
# ALPINE_LDAP_AUTH_USERNAME_FORMAT: "%[email protected]" | ||
# ALPINE_LDAP_ATTRIBUTE_NAME: "userPrincipalName" | ||
# ALPINE_LDAP_ATTRIBUTE_MAIL: "mail" | ||
# ALPINE_LDAP_GROUPS_FILTER: "(&(objectClass=group)(objectCategory=Group))" | ||
# ALPINE_LDAP_USER_GROUPS_FILTER: "(member:1.2.840.113556.1.4.1941:={USER_DN})" | ||
# ALPINE_LDAP_GROUPS_SEARCH_FILTER: "(&(objectClass=group)(objectCategory=Group)(cn=*{SEARCH_TERM}*))" | ||
# ALPINE_LDAP_USERS_SEARCH_FILTER: "(&(objectClass=user)(objectCategory=Person)(cn=*{SEARCH_TERM}*))" | ||
# ALPINE_LDAP_USER_PROVISIONING: "false" | ||
# ALPINE_LDAP_TEAM_SYNCHRONIZATION: "false" | ||
# | ||
# Optional OpenID Connect (OIDC) Properties | ||
# - ALPINE_OIDC_ENABLED=true | ||
# - ALPINE_OIDC_ISSUER=https://auth.example.com/auth/realms/example | ||
# - ALPINE_OIDC_CLIENT_ID= | ||
# - ALPINE_OIDC_USERNAME_CLAIM=preferred_username | ||
# - ALPINE_OIDC_TEAMS_CLAIM=groups | ||
# - ALPINE_OIDC_USER_PROVISIONING=true | ||
# - ALPINE_OIDC_TEAM_SYNCHRONIZATION=true | ||
# ALPINE_OIDC_ENABLED: "true" | ||
# ALPINE_OIDC_ISSUER: "https://auth.example.com/auth/realms/example" | ||
# ALPINE_OIDC_CLIENT_ID: "" | ||
# ALPINE_OIDC_USERNAME_CLAIM: "preferred_username" | ||
# ALPINE_OIDC_TEAMS_CLAIM: "groups" | ||
# ALPINE_OIDC_USER_PROVISIONING: "true" | ||
# ALPINE_OIDC_TEAM_SYNCHRONIZATION: "true" | ||
# | ||
# Optional HTTP Proxy Settings | ||
# - ALPINE_HTTP_PROXY_ADDRESS=proxy.example.com | ||
# - ALPINE_HTTP_PROXY_PORT=8888 | ||
# - ALPINE_HTTP_PROXY_USERNAME= | ||
# - ALPINE_HTTP_PROXY_PASSWORD= | ||
# - ALPINE_NO_PROXY= | ||
# ALPINE_HTTP_PROXY_ADDRESS: "proxy.example.com" | ||
# ALPINE_HTTP_PROXY_PORT: "8888" | ||
# ALPINE_HTTP_PROXY_USERNAME: "" | ||
# ALPINE_HTTP_PROXY_PASSWORD: "" | ||
# ALPINE_NO_PROXY: "" | ||
# | ||
# Optional HTTP Outbound Connection Timeout Settings. All values are in seconds. | ||
# - ALPINE_HTTP_TIMEOUT_CONNECTION=30 | ||
# - ALPINE_HTTP_TIMEOUT_SOCKET=30 | ||
# - ALPINE_HTTP_TIMEOUT_POOL=60 | ||
# ALPINE_HTTP_TIMEOUT_CONNECTION: "30" | ||
# ALPINE_HTTP_TIMEOUT_SOCKET: "30" | ||
# ALPINE_HTTP_TIMEOUT_POOL: "60" | ||
# | ||
# Optional Cross-Origin Resource Sharing (CORS) Headers | ||
# - ALPINE_CORS_ENABLED=true | ||
# - ALPINE_CORS_ALLOW_ORIGIN=* | ||
# - ALPINE_CORS_ALLOW_METHODS=GET, POST, PUT, DELETE, OPTIONS | ||
# - ALPINE_CORS_ALLOW_HEADERS=Origin, Content-Type, Authorization, X-Requested-With, Content-Length, Accept, Origin, X-Api-Key, X-Total-Count, * | ||
# - ALPINE_CORS_EXPOSE_HEADERS=Origin, Content-Type, Authorization, X-Requested-With, Content-Length, Accept, Origin, X-Api-Key, X-Total-Count | ||
# - ALPINE_CORS_ALLOW_CREDENTIALS=true | ||
# - ALPINE_CORS_MAX_AGE=3600 | ||
# ALPINE_CORS_ENABLED: "true" | ||
# ALPINE_CORS_ALLOW_ORIGIN: "*" | ||
# ALPINE_CORS_ALLOW_METHODS: "GET, POST, PUT, DELETE, OPTIONS" | ||
# ALPINE_CORS_ALLOW_HEADERS: "Origin, Content-Type, Authorization, X-Requested-With, Content-Length, Accept, Origin, X-Api-Key, X-Total-Count, *" | ||
# ALPINE_CORS_EXPOSE_HEADERS: "Origin, Content-Type, Authorization, X-Requested-With, Content-Length, Accept, Origin, X-Api-Key, X-Total-Count" | ||
# ALPINE_CORS_ALLOW_CREDENTIALS: "true" | ||
# ALPINE_CORS_MAX_AGE: "3600" | ||
# | ||
# Optional logging configuration | ||
# - LOGGING_LEVEL=INFO | ||
# - LOGGING_CONFIG_PATH=logback.xml | ||
# LOGGING_LEVEL: "INFO" | ||
# LOGGING_CONFIG_PATH: "logback.xml" | ||
# | ||
# Optional metrics properties | ||
# - ALPINE_METRICS_ENABLED=true | ||
# - ALPINE_METRICS_AUTH_USERNAME= | ||
# - ALPINE_METRICS_AUTH_PASSWORD= | ||
# ALPINE_METRICS_ENABLED: "true" | ||
# ALPINE_METRICS_AUTH_USERNAME: "" | ||
# ALPINE_METRICS_AUTH_PASSWORD: "" | ||
# | ||
# Optional environmental variables to enable default notification publisher templates override and set the base directory to search for templates | ||
# - DEFAULT_TEMPLATES_OVERRIDE_ENABLED=false | ||
# - DEFAULT_TEMPLATES_OVERRIDE_BASE_DIRECTORY=/data | ||
# DEFAULT_TEMPLATES_OVERRIDE_ENABLED: "false" | ||
# DEFAULT_TEMPLATES_OVERRIDE_BASE_DIRECTORY: "/data" | ||
# | ||
# Optional configuration for the Snyk analyzer | ||
# - SNYK_THREAD_BATCH_SIZE=10 | ||
# SNYK_THREAD_BATCH_SIZE: "10" | ||
# | ||
# Optional environmental variables to provide more JVM arguments to the API Server JVM, i.e. "-XX:ActiveProcessorCount=8" | ||
# - EXTRA_JAVA_OPTIONS= | ||
# EXTRA_JAVA_OPTIONS: "" | ||
environment: | ||
ALPINE_DATABASE_MODE: "external" | ||
ALPINE_DATABASE_URL: "jdbc:postgresql://postgres:5432/dtrack" | ||
ALPINE_DATABASE_DRIVER: "org.postgresql.Driver" | ||
ALPINE_DATABASE_USERNAME: "dtrack" | ||
ALPINE_DATABASE_PASSWORD: "dtrack" | ||
deploy: | ||
resources: | ||
limits: | ||
|
@@ -102,29 +107,49 @@ services: | |
restart_policy: | ||
condition: on-failure | ||
ports: | ||
- '8081:8080' | ||
- '8081:8080' | ||
volumes: | ||
- 'dependency-track:/data' | ||
- 'dtrack-data:/data' | ||
restart: unless-stopped | ||
|
||
dtrack-frontend: | ||
frontend: | ||
image: dependencytrack/frontend | ||
depends_on: | ||
- dtrack-apiserver | ||
apiserver: | ||
condition: service_healthy | ||
environment: | ||
# The base URL of the API server. | ||
# NOTE: | ||
# * This URL must be reachable by the browsers of your users. | ||
# * The frontend container itself does NOT communicate with the API server directly, it just serves static files. | ||
# * When deploying to dedicated servers, please use the external IP or domain of the API server. | ||
- API_BASE_URL=http://localhost:8081 | ||
# - "OIDC_ISSUER=" | ||
# - "OIDC_CLIENT_ID=" | ||
# - "OIDC_SCOPE=" | ||
# - "OIDC_FLOW=" | ||
# - "OIDC_LOGIN_BUTTON_TEXT=" | ||
API_BASE_URL: "http://localhost:8081" | ||
# OIDC_ISSUER: "" | ||
# OIDC_CLIENT_ID: "" | ||
# OIDC_SCOPE: "" | ||
# OIDC_FLOW: "" | ||
# OIDC_LOGIN_BUTTON_TEXT: "" | ||
# volumes: | ||
# - "/host/path/to/config.json:/app/static/config.json" | ||
ports: | ||
- "8080:8080" | ||
restart: unless-stopped | ||
|
||
postgres: | ||
image: postgres:17-alpine | ||
environment: | ||
POSTGRES_DB: "dtrack" | ||
POSTGRES_USER: "dtrack" | ||
POSTGRES_PASSWORD: "dtrack" | ||
healthcheck: | ||
test: [ "CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}" ] | ||
interval: 5s | ||
timeout: 3s | ||
retries: 3 | ||
volumes: | ||
- "postgres-data:/var/lib/postgresql/data" | ||
restart: unless-stopped | ||
|
||
volumes: | ||
dtrack-data: {} | ||
postgres-data: {} |