blob: 04f65babfa32ae5a3ac7f8b5406b85848057a158 [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
services:
polaris:
image: apache/polaris:latest
ports:
# API port
- "8181:8181"
# Management port (metrics and health checks)
- "8182:8182"
depends_on:
jaeger:
condition: service_healthy
environment:
POLARIS_BOOTSTRAP_CREDENTIALS: POLARIS,${CLIENT_ID},${CLIENT_SECRET}
quarkus.otel.exporter.otlp.endpoint: http://jaeger:4317
# Resource attributes (added to all traces)
quarkus.otel.resource.attributes[0]: polaris.app=polaris-getting-started
quarkus.otel.resource.attributes[1]: polaris.env=dev
polaris.features."ALLOW_INSECURE_STORAGE_TYPES": "true"
polaris.features."SUPPORTED_CATALOG_STORAGE_TYPES": "[\"FILE\",\"S3\",\"GCS\",\"AZURE\"]"
polaris.readiness.ignore-severe-issues: "true"
# Custom metrics (added to all requests)
polaris.metrics.tags.app: polaris-getting-started
polaris.metrics.tags.env: dev
# Custom logging (added to all log messages)
polaris.log.mdc.app: polaris-getting-started
polaris.log.mdc.env: dev
quarkus.log.console.format: "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] [%X{app},%X{env}] [%X{realmId},%X{requestId}] [%X{traceId},%X{spanId}] (%t) %s%e%n"
quarkus.log.file.format: "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] [%X{app},%X{env}] [%X{realmId},%X{requestId}] [%X{traceId},%X{spanId}] (%t) %s%e%n"
polaris.realm-context.realms: POLARIS
healthcheck:
test: ["CMD", "curl", "http://localhost:8182/q/health"]
interval: 2s
timeout: 10s
retries: 10
polaris-setup:
image: alpine/curl
depends_on:
polaris:
condition: service_healthy
environment:
- CLIENT_ID=${CLIENT_ID}
- CLIENT_SECRET=${CLIENT_SECRET}
volumes:
- ${ASSETS_PATH}/polaris/:/polaris
entrypoint: '/bin/sh -c "chmod +x /polaris/create-catalog.sh && /polaris/create-catalog.sh"'
prometheus:
image: docker.io/prom/prometheus:v3.7.3
ports:
- "9093:9090"
depends_on:
polaris:
condition: service_healthy
volumes:
- ../assets/prometheus/:/etc/prometheus/
command:
- --config.file=/etc/prometheus/prometheus.yml
healthcheck:
test: "wget -O /dev/null -o /dev/null http://localhost:9090"
interval: 5s
timeout: 2s
retries: 15
# Jaeger (OpenTelemetry traces collector)
jaeger:
image: docker.io/jaegertracing/all-in-one:1.74.0
ports:
# Jaeger gRPC collector, used by Polaris
- "4317:4317"
# Jaeger UI
- "16686:16686"
environment:
- COLLECTOR_OTLP_ENABLED=true
healthcheck:
test: "echo -e 'GET / HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' | nc localhost 16686 | grep -q '200 OK'"
interval: 5s
timeout: 2s
retries: 15