| # |
| # 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 |