目标:经过Docker的方式部署MySql和zipkin,实现zipkin调用mysqlmysql
解决方案:让须要连接的容器同属一个外部网络
第一步:定义容器mysql的docker-compose.yml文件,内容以下:sql
version: '2' services: db: image: hub.c.163.com/library/mysql:5.7 container_name: mysql volumes: - /Users/xiewanzhi/mysql_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: testDB ports: # Port used for the Zipkin UI and HTTP Api - 3306:3306 networks: - default - app_net networks: app_net: external: true
第二步:定义容器zipkin的docker-compose.yml文件,内容以下:docker
version: '2' services: # The zipkin process services the UI, and also exposes a POST endpoint that # instrumentation can send trace data to. Scribe is disabled by default. zipkin: image: openzipkin/zipkin:2.4.4 container_name: zipkin environment: - STORAGE_TYPE=mysql # Point the zipkin at the storage backend - MYSQL_DB=zipkin - MYSQL_USER=root - MYSQL_PASS=123456 - MYSQL_HOST=mysql - MYSQL_TCP_PORT=3306 # Uncomment to enable scribe # - SCRIBE_ENABLED=true # Uncomment to enable self-tracing # - SELF_TRACING_ENABLED=true # Uncomment to enable debug logging # - JAVA_OPTS=-Dlogging.level.zipkin=DEBUG -Dlogging.level.zipkin2=DEBUG ports: # Port used for the Zipkin UI and HTTP Api - 9411:9411 # Uncomment if you set SCRIBE_ENABLED=true # - 9410:9410 networks: - default - app_net networks: app_net: external: true
这里两个容器的定义里都使用了同一个外部网络 app_net ,所以,咱们须要在启动这两个容器以前经过如下命令再建立外部网络:bash
docker network create app_net
以后,经过 docker-compose up -d 命令启动这两个容器,而后执行 docker exec -it zipkin ping mysql,你将会看到以下的输出:网络
MacBook-Pro:docker-zipkin mymac$ docker exec -it zipkin ping mysql PING mysql (172.20.0.2): 56 data bytes 64 bytes from 172.20.0.2: seq=0 ttl=64 time=0.100 ms 64 bytes from 172.20.0.2: seq=1 ttl=64 time=0.149 ms 64 bytes from 172.20.0.2: seq=2 ttl=64 time=0.145 ms 64 bytes from 172.20.0.2: seq=3 ttl=64 time=0.143 ms 64 bytes from 172.20.0.2: seq=4 ttl=64 time=0.652 ms 64 bytes from 172.20.0.2: seq=5 ttl=64 time=0.128 ms 64 bytes from 172.20.0.2: seq=6 ttl=64 time=0.210 ms
证实这两个容器是成功连接了。app
此时http://127.0.0.1:9411/zipkin/能够提供追踪服务了debug