APM, Application Performance Monitoring System
docker pull library/${OAP_IMAGE
docker run -d --name skywalking -p 9200:9200 --restart always ${OAP_IMAGE:-ghcr.io/apache/skywalking/oap:latest}
podman run -d --name skywalking -p 9200:9200 --restart always ${OAP_IMAGE:-ghcr.io/apache/skywalking/oap:latest}
skopeo inspect docker://docker.io/library/${OAP_IMAGE:-ghcr.io/apache/skywalking/oap
oras pull ${OAP_IMAGE:-ghcr.io/apache/skywalking/oap:latest}
docker compose up -d
# 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:
elasticsearch:
profiles:
- "elasticsearch"
image: ${ELASTICSEARCH_IMAGE:-docker.elastic.co/elasticsearch/elasticsearch-oss:7.4.2}
container_name: elasticsearch
ports:
- "9200:9200"
networks:
- demo
healthcheck:
test: [ "CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
banyandb:
profiles:
- "banyandb"
image: ${BANYANDB_IMAGE}
container_name: banyandb
networks:
- demo
expose:
- 17912
ports:
- 17913:17913
command: standalone --stream-root-path /tmp/stream-data --measure-root-path /tmp/measure-data
healthcheck:
test: [ "CMD", "sh", "-c", "nc -nz 127.0.0.1 17912" ]
interval: 5s
timeout: 60s
retries: 120
oap-base: &oap-base
profiles: [ "none" ]
image: ${OAP_IMAGE:-ghcr.io/apache/skywalking/oap:latest}
ports:
- "11800:11800"
- "12800:12800"
- "17128:17128"
networks:
- demo
healthcheck:
# The OAP image (eclipse-temurin JRE) ships bash but no curl/wget/nc,
# so probe the query port with bash's built-in /dev/tcp instead.
test: [ "CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/12800" ]
interval: 15s
timeout: 10s
retries: 10
# OAP can take 60-120s to boot (BanyanDB schema install); don't count
# failures against the retry budget during that window.
start_period: 90s
environment: &oap-env
SW_HEALTH_CHECKER: default
SW_TELEMETRY: prometheus
JAVA_OPTS: "-Xms2048m -Xmx2048m"
oap-es:
<<: *oap-base
profiles:
- "elasticsearch"
container_name: oap
depends_on:
elasticsearch:
condition: service_healthy
environment:
<<: *oap-env
SW_STORAGE: elasticsearch
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
oap-bdb:
<<: *oap-base
profiles:
- "banyandb"
container_name: oap
depends_on:
banyandb:
condition: service_healthy
environment:
<<: *oap-env
SW_STORAGE: banyandb
SW_STORAGE_BANYANDB_TARGETS: banyandb:17912
# SkyWalking Horizon UI โ official web UI as of 10.5.0.
# Source: https://github.com/apache/skywalking-horizon-ui
# Talks to OAP via the public GraphQL/REST port (12800) and to admin-server
# for write APIs (UI templates, runtime-rule, dsl-debugging, status, inspect).
ui:
image: ${UI_IMAGE:-ghcr.io/apache/skywalking-horizon-ui:latest}
container_name: ui
ports:
# Horizon listens on 8081 inside the container (HORIZON_SERVER_PORT).
- "8080:8081"
networks:
- demo
volumes:
# Backend URLs (OAP query/admin/zipkin) and login users come ONLY from
# this file; there are no env vars for them. The image's HORIZON_CONFIG
# default points here.
- ./horizon.yaml:/app/horizon.yaml:ro
networks:
demo: