Pre-Built Docker Images
Pre-built multi-architecture Docker images are published to GitHub Container Registry (GHCR)
on every push to the main branch via CI.
Image Repository
ghcr.io/apache/skywalking-graalvm-distro
GitHub Packages page: https://github.com/apache/skywalking-graalvm-distro/pkgs/container/skywalking-graalvm-distro
Tags
| Tag | Description |
|---|---|
latest |
Most recent build from the main branch |
<short-sha> |
Pinned to a specific commit (first 7 characters of the commit SHA) |
Supported Architectures
Each tag is a multi-architecture manifest supporting:
linux/amd64linux/arm64
Docker automatically selects the correct architecture for your platform.
Pull the Image
docker pull ghcr.io/apache/skywalking-graalvm-distro:latest
Or pin to a specific commit:
docker pull ghcr.io/apache/skywalking-graalvm-distro:<short-sha>
Run with Docker
Standalone with BanyanDB
The simplest way is to use the included docker-compose.yml, replacing the locally built image
with the pre-built one:
# Clone the repo (for docker-compose.yml and config files only)
git clone https://github.com/apache/skywalking-graalvm-distro.git
cd skywalking-graalvm-distro
# Run with pre-built image
docker compose -f docker/docker-compose.yml up
Edit docker/docker-compose.yml to use the GHCR image instead of the local build:
services:
oap:
image: ghcr.io/apache/skywalking-graalvm-distro:latest
# ... rest of config unchanged
Manual Docker Run
docker run -d \
-p 12800:12800 \
-p 11800:11800 \
-e SW_STORAGE_BANYANDB_TARGETS=<banyandb-host>:17912 \
-e SW_CLUSTER=standalone \
-e SW_CONFIGURATION=none \
ghcr.io/apache/skywalking-graalvm-distro:latest
Environment Variables
All settings from Configuration are configurable via environment variables. Common ones for Docker deployment:
| Variable | Description | Default |
|---|---|---|
SW_STORAGE_BANYANDB_TARGETS |
BanyanDB server address | 127.0.0.1:17912 |
SW_CLUSTER |
Cluster mode (standalone or kubernetes) |
standalone |
SW_CONFIGURATION |
Dynamic config provider (none or k8s-configmap) |
k8s-configmap |
SW_CORE_REST_PORT |
REST API port | 12800 |
SW_CORE_GRPC_PORT |
gRPC port | 11800 |
SW_TELEMETRY_PROMETHEUS_PORT |
Prometheus metrics port | 1234 |
SW_LOG_LEVEL |
Log4j2 log level | INFO |
JAVA_OPTS |
Additional flags passed to the native binary (e.g., -Dmode=init) |
(empty) |
Exposed Ports
| Port | Protocol | Service |
|---|---|---|
| 12800 | HTTP | REST API — GraphQL query, health check, HTTP data receivers |
| 11800 | gRPC | Agent data collection — traces, metrics, logs, profiling |
| 1234 | HTTP | Prometheus self-telemetry metrics |
Image Details
- Base image:
debian:bookworm-slim - Contents: Native binary (
oap-server, ~203MB) +config/directory - Entrypoint:
./oap-serverwithJAVA_OPTSforwarded as command-line arguments - No JVM: The image does not contain a JVM — the binary is a self-contained GraalVM native image