From b1068e20500c8227a9130b085e1cd497423de970 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Fri, 11 Dec 2015 16:33:25 +0000 Subject: [PATCH] Re-organize docker files for Zipkin server Still not quite working: $ docker-compose -f docker-compose.yml -f docker-compose.zipkin.yml up everything starts up fine (once the database is initialized), but the zipkin server is not listening to rabbit (and there are errors in the logs). --- .../docker-compose.query.yml | 20 ------- .../docker-compose.zipkin.yml | 21 +++++++ spring-cloud-sleuth-zipkin-stream/pom.xml | 60 +++++++++++++++---- .../src/main/docker/Dockerfile | 3 +- ...ava => ZipkinStreamServerApplication.java} | 4 +- .../src/main/resources/zipkin-server.yml | 4 +- .../stream/ZipkinServerApplicationTests.java | 11 ++-- 7 files changed, 81 insertions(+), 42 deletions(-) delete mode 100644 spring-cloud-sleuth-zipkin-stream/docker-compose.query.yml create mode 100644 spring-cloud-sleuth-zipkin-stream/docker-compose.zipkin.yml rename spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/{ZipkinQueryServerApplication.java => ZipkinStreamServerApplication.java} (76%) diff --git a/spring-cloud-sleuth-zipkin-stream/docker-compose.query.yml b/spring-cloud-sleuth-zipkin-stream/docker-compose.query.yml deleted file mode 100644 index 101a558f5..000000000 --- a/spring-cloud-sleuth-zipkin-stream/docker-compose.query.yml +++ /dev/null @@ -1,20 +0,0 @@ -query: - image: springio/zipkin-server - environment: - - MYSQL_HOST=storage - expose: - - 9411 - ports: - - 9411:9411 - links: - - mysql:storage - - rabbitmq:messages -web: - image: openzipkin/zipkin-web:1.25.0 - ports: - - 8080:8080 - environment: - - TRANSPORT_TYPE=http - - WEB_LOG_LEVEL=DEBUG - links: - - query diff --git a/spring-cloud-sleuth-zipkin-stream/docker-compose.zipkin.yml b/spring-cloud-sleuth-zipkin-stream/docker-compose.zipkin.yml new file mode 100644 index 000000000..b3ae76a1b --- /dev/null +++ b/spring-cloud-sleuth-zipkin-stream/docker-compose.zipkin.yml @@ -0,0 +1,21 @@ +zipkin: + image: springio/spring-cloud-sleuth-zipkin-stream + environment: + - MYSQL_HOST=mysql + - RABBIT_HOST=rabbitmq + expose: + - 9411 + ports: + - 9411:9411 + links: + - mysql + - rabbitmq +web: + image: openzipkin/zipkin-web:1.25.3 + ports: + - 8080:8080 + environment: + - TRANSPORT_TYPE=http + - WEB_LOG_LEVEL=DEBUG + links: + - zipkin:query diff --git a/spring-cloud-sleuth-zipkin-stream/pom.xml b/spring-cloud-sleuth-zipkin-stream/pom.xml index 263242e93..4a5671e59 100644 --- a/spring-cloud-sleuth-zipkin-stream/pom.xml +++ b/spring-cloud-sleuth-zipkin-stream/pom.xml @@ -28,19 +28,11 @@ spring-boot-configuration-processor true - - org.springframework.cloud - spring-cloud-starter-stream-rabbit - objenesis org.objenesis compile - - org.springframework.boot - spring-boot-starter-actuator - org.springframework.boot spring-boot-starter-web @@ -57,6 +49,16 @@ org.springframework.cloud spring-cloud-sleuth-stream + + org.springframework.integration + spring-integration-jmx + true + + + org.springframework.cloud + spring-cloud-stream-binder-rabbit + true + org.springframework.boot spring-boot-starter-cloud-connectors @@ -89,7 +91,7 @@ org.springframework.cloud - spring-cloud-stream-test-support + spring-cloud-stream-binder-local test @@ -106,23 +108,57 @@ + + + ${project.basedir}/src/main/resources + + + ${project.build.directory}/generated-resources + + org.springframework.boot spring-boot-maven-plugin + + exec + + + + maven-resources-plugin + + + + copy-resources + validate + + copy-resources + + + ${basedir}/target/generated-docker + + + src/main/docker + true + + + + + com.spotify docker-maven-plugin - 0.3.5 + 0.3.8 ${docker.image.prefix}/${project.artifactId} - src/main/docker + ${basedir}/target/generated-docker / ${project.build.directory} - ${project.build.finalName}.jar + ${project.build.finalName}-exec.jar diff --git a/spring-cloud-sleuth-zipkin-stream/src/main/docker/Dockerfile b/spring-cloud-sleuth-zipkin-stream/src/main/docker/Dockerfile index 309c566fc..76917389e 100644 --- a/spring-cloud-sleuth-zipkin-stream/src/main/docker/Dockerfile +++ b/spring-cloud-sleuth-zipkin-stream/src/main/docker/Dockerfile @@ -1,5 +1,6 @@ FROM frolvlad/alpine-oraclejdk8 VOLUME /tmp -ADD spring-cloud-sleuth-zipkin-stream-1.0.0.BUILD-SNAPSHOT.jar app.jar +ADD @project.artifactId@-@project.version@-exec.jar app.jar RUN sh -c 'touch /app.jar' +EXPOSE 9411 CMD ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] diff --git a/spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinQueryServerApplication.java b/spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinStreamServerApplication.java similarity index 76% rename from spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinQueryServerApplication.java rename to spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinStreamServerApplication.java index b43c8456f..ad7a4dc80 100644 --- a/spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinQueryServerApplication.java +++ b/spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinStreamServerApplication.java @@ -5,10 +5,10 @@ import org.springframework.boot.builder.SpringApplicationBuilder; @SpringBootApplication @EnableZipkinStreamServer -public class ZipkinQueryServerApplication { +public class ZipkinStreamServerApplication { public static void main(String[] args) throws Exception { - new SpringApplicationBuilder(ZipkinQueryServerApplication.class) + new SpringApplicationBuilder(ZipkinStreamServerApplication.class) .properties("spring.config.name=zipkin-server").run(args); } diff --git a/spring-cloud-sleuth-zipkin-stream/src/main/resources/zipkin-server.yml b/spring-cloud-sleuth-zipkin-stream/src/main/resources/zipkin-server.yml index dd709d36c..27f54dafd 100644 --- a/spring-cloud-sleuth-zipkin-stream/src/main/resources/zipkin-server.yml +++ b/spring-cloud-sleuth-zipkin-stream/src/main/resources/zipkin-server.yml @@ -2,13 +2,15 @@ server: port: 9411 spring: + rabbitmq: + host: ${RABBIT_HOST:localhost} datasource: schema: classpath:/mysql.sql url: jdbc:mysql://${MYSQL_HOST:localhost}/test username: root password: root # Switch this on to create the schema on startup: - initialize: false + initialize: true continueOnError: true sleuth: enabled: false diff --git a/spring-cloud-sleuth-zipkin-stream/src/test/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinServerApplicationTests.java b/spring-cloud-sleuth-zipkin-stream/src/test/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinServerApplicationTests.java index 2e7be9bc8..ff200099d 100644 --- a/spring-cloud-sleuth-zipkin-stream/src/test/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinServerApplicationTests.java +++ b/spring-cloud-sleuth-zipkin-stream/src/test/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinServerApplicationTests.java @@ -7,24 +7,23 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.IntegrationTest; import org.springframework.boot.test.SpringApplicationConfiguration; -import org.springframework.cloud.sleuth.zipkin.stream.ZipkinQueryServerApplication; -import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import io.zipkin.SpanStore; + @RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = ZipkinQueryServerApplication.class) +@SpringApplicationConfiguration(classes = ZipkinStreamServerApplication.class) @IntegrationTest({ "server.port=0", "spring.datasource.initialize=true" }) @ActiveProfiles("test") public class ZipkinServerApplicationTests { @Autowired - private JdbcTemplate jdbcTemplate; + private SpanStore store; @Test public void contextLoads() { - int count = this.jdbcTemplate.queryForObject("SELECT COUNT(*) FROM zipkin_spans", - Integer.class); + int count = this.store.getServiceNames().size(); assertEquals(0, count); }