docker/README.md
This directory contains assets used to build and release Zipkin's Docker images.
The only Zipkin production images built here:
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
base layer openzipkin/zipkin, and setting up schema where relevant.
Zipkin has no dependencies, for example you can run an in-memory zipkin server like so:
# Note: this is mirrored as ghcr.io/openzipkin/zipkin-slim
$ 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".
Note: the openzipkin/zipkin-slim image only supports "elasticsearch" storage. To use other storage types, you must use the main image openzipkin/zipkin.
When in Docker, the following environment variables also apply
JAVA_OPTS: Use to set java arguments, such as heap size or trust store location.
openzipkin/zipkin sets max heap to 64m while openzipkin/zipkin-slim 32mSTORAGE_PORT_9042_TCP_ADDR -- A Cassandra node listening on port 9042. This
environment variable is typically set by linking a container running
zipkin-cassandra as "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-mysql as "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-elasticsearch as "storage" when you start the container. This is ignored
when ES_HOSTS or ES_AWS_DOMAIN are set.KAFKA_PORT_2181_TCP_ADDR -- A zookeeper node listening on port 2181. This
environment variable is typically set by linking a container running
zipkin-kafka as "kafka" when you start the container.For example, to increase heap size, set JAVA_OPTS as shown in our docker-compose file:
environment:
- JAVA_OPTS=-Xms128m -Xmx128m -XX:+ExitOnOutOfMemoryError
For example, to add debug logging, set command as shown in our docker-compose file:
command: --logging.level.zipkin2=DEBUG
The openzipkin/zipkin and openzipkin/zipkin-slim images run under a nologin
user named 'zipkin' with a home directory of '/zipkin'. As this is Alpine Linux
image, you won't find many utilities installed, but you can browse contents
with a shell like below:
$ docker run -it --rm --entrypoint /bin/sh openzipkin/zipkin
/zipkin $ ls
BOOT-INF META-INF org run.sh
If using Docker's deprecated container links, you need to set env variables accordingly.
Ex. If your link name is "storage" for an Elasticsearch container:
ES_HOSTS=http://$STORAGE_PORT_9200_TCP_ADDR:9200
The above is mentioned only for historical reasons. The OpenZipkin community do not support Docker's deprecated container links.
If using an external MySQL server or image, ensure schema and other parameters match the docs.
To build openzipkin/zipkin:test, from the top-level of the repository, run:
$ build-bin/docker/docker_build openzipkin/zipkin:test
If you want the slim distribution (openzipkin/zipkin-slim:test), run:
$ DOCKER_TARGET=zipkin-slim build-bin/docker/docker_build openzipkin/zipkin-slim:test