zipkin Docker images
This directory contains assets used to build and release Zipkin's Docker images.
The only Zipkin production images built here:
- openzipkin/zipkin: The core server image that hosts the Zipkin UI, Api and Collector features.
- openzipkin/zipkin-slim: The stripped server image that hosts the Zipkin UI and Api features, but only supports in-memory or Elasticsearch storage with HTTP or gRPC span collectors.
We also provide a number images that are not for production, rather to simplify demos and
integration tests. We designed these to be small and start easily. We did this by re-using the same
openzipkin/zipkin, and setting up schema where relevant.
- openzipkin/zipkin-cassandra - runs Cassandra initialized with Zipkin's schema
- openzipkin/zipkin-elasticsearch6 - runs Elasticsearch 6.x
- openzipkin/zipkin-elasticsearch7 - runs Elasticsearch 7.x
- openzipkin/zipkin-kafka - runs both Kafka+ZooKeeper
- openzipkin/zipkin-mysql - runs MySQL initialized with Zipkin's schema
- openzipkin/zipkin-ui - serves the (Lens) UI directly with NGINX
Zipkin has no dependencies, for example you can run an in-memory zipkin server like so:
docker run -d -p 9411:9411 openzipkin/zipkin-slim
See the ui at (docker ip):9411
In the ui - click zipkin-server, then click "Find Traces".
We also provide example compose files that integrate collectors and storage, such as Kafka or Elasticsearch.
Configuration is via environment variables, defined by zipkin-server. Notably, you'll want to look at the
STORAGE_TYPE environment variables, which
include "cassandra", "mysql" and "elasticsearch".
openzipkin/zipkin-slim image only supports "elasticsearch" storage. To use other storage types, you must use the main image
When in docker, the following environment variables also apply
JAVA_OPTS: Use to set java arguments, such as heap size or trust store location.
STORAGE_PORT_9042_TCP_ADDR-- A Cassandra node listening on port 9042. This environment variable is typically set by linking a container running
zipkin-cassandraas "storage" when you start the container.
STORAGE_PORT_3306_TCP_ADDR-- A MySQL node listening on port 3306. This environment variable is typically set by linking a container running
zipkin-mysqlas "storage" when you start the container.
STORAGE_PORT_9200_TCP_ADDR-- An Elasticsearch node listening on port 9200. This environment variable is typically set by linking a container running
zipkin-elasticsearchas "storage" when you start the container. This is ignored when
KAFKA_PORT_2181_TCP_ADDR-- A zookeeper node listening on port 2181. This environment variable is typically set by linking a container running
zipkin-kafkaas "kafka" when you start the container.
For example, to add debug logging, set JAVA_OPTS as shown in our docker-compose file:
- JAVA_OPTS=-Dlogging.level.zipkin=DEBUG -Dlogging.level.zipkin2=DEBUG
openzipkin/zipkin-slim images run under a nologin
user named 'zipkin' with a home directory of '/zipkin'. As this is a distroless
image, you won't find many utilities installed, but you can browse contents
with a shell like below:
$ docker run -it --rm --entrypoint /busybox/sh openzipkin/zipkin /zipkin $ ls BOOT-INF META-INF org run.sh
If using an external MySQL server or image, ensure schema and other parameters match the docs.
openzipkin/zipkin, from the top level of the repository, run:
$ docker build -t openzipkin/zipkin:test -f docker/Dockerfile .
If you want the slim distribution instead, run:
$ docker build -t openzipkin/zipkin-slim:test -f docker/Dockerfile . --target zipkin-slim