From a765157973189c8ea098b0dc23c6bd14099188d2 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Mon, 2 Oct 2017 14:47:07 +0200 Subject: [PATCH 1/8] wip build --- ksql/Dockerfile | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 ksql/Dockerfile diff --git a/ksql/Dockerfile b/ksql/Dockerfile new file mode 100644 index 0000000..f84fcc5 --- /dev/null +++ b/ksql/Dockerfile @@ -0,0 +1,34 @@ +FROM solsson/kafka:0.11.0.1 + +ENV ksql_repo=https://github.com/confluentinc/ksql ksql_version=dc1ad22e95793252c47f2a66656417e64e0fec21 + +RUN set -ex; \ + buildDeps='curl ca-certificates'; \ + export DEBIAN_FRONTEND=noninteractive; \ + apt-get update && apt-get install -y $buildDeps --no-install-recommends; \ + \ + MAVEN_VERSION=3.5.0 PATH=$PATH:$(pwd)/maven/bin; \ + mkdir ./maven; \ + curl -SLs https://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz | tar -xzf - --strip-components=1 -C ./maven; \ + mvn --version; \ + \ + mkdir ./ksql; \ + cd ./ksql; \ + curl -SLs ${ksql_repo}/archive/${ksql_version}.tar.gz \ + | tar -xzf - --strip-components=1 -C ./; \ + mvn package install; \ +echo "temp layer"; +RUN echo "temp layer"; \ + cd ..; \ + mv ~/.m2/repository/com/sree/kafka/kafka-connect-jmx/0.0.1/kafka-connect-jmx-0.0.1-jar-with-dependencies.jar ./libs/; \ + rm -rf ./ksql; \ + rm -rf ./maven ~/.m2; \ + \ + apt-get purge -y --auto-remove $buildDeps; \ + rm -rf /var/lib/apt/lists/*; \ + rm /var/log/dpkg.log /var/log/apt/*.log + +COPY *.properties ./config/ + +ENTRYPOINT ["./bin/connect-standalone.sh"] +CMD ["./config/worker.properties", "./config/connect-jmx.properties"] From a92eaa54c5f5b8806ad537b699ca07b9142e4caf Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Mon, 2 Oct 2017 15:03:29 +0200 Subject: [PATCH 2/8] Uses latest kafka-jre in kafka-cp image too --- cp/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cp/Dockerfile b/cp/Dockerfile index 48f4dd5..add909e 100644 --- a/cp/Dockerfile +++ b/cp/Dockerfile @@ -1,4 +1,4 @@ -FROM solsson/kafka-jre@sha256:7765513cf5fa455a672a06f584058c1c81cc0b3b56cc56b0cfdf1a917a183f26 +FROM solsson/kafka-jre@sha256:61196845eafb0970cf94598fd723a66407be31cd8bab83e3a29b4e602683280d ENV CP_VERSION=3.3.0 From 6426c1fba60a35c2a04fd9c7c7db46a126aa4c25 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Mon, 2 Oct 2017 15:37:56 +0200 Subject: [PATCH 3/8] Build ksql like kafka-cp, i.e. not on top of kafka, still wip though --- ksql/Dockerfile | 43 +++++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 26 deletions(-) diff --git a/ksql/Dockerfile b/ksql/Dockerfile index f84fcc5..bd0b07a 100644 --- a/ksql/Dockerfile +++ b/ksql/Dockerfile @@ -1,34 +1,25 @@ -FROM solsson/kafka:0.11.0.1 +FROM solsson/kafka-jre@sha256:61196845eafb0970cf94598fd723a66407be31cd8bab83e3a29b4e602683280d -ENV ksql_repo=https://github.com/confluentinc/ksql ksql_version=dc1ad22e95793252c47f2a66656417e64e0fec21 +ENV ksql_version=dc1ad22e95793252c47f2a66656417e64e0fec21 ksql_repo=https://github.com/confluentinc/ksql + +WORKDIR /usr/local RUN set -ex; \ - buildDeps='curl ca-certificates'; \ + WORKDIR=$PWD; \ + mkdir -p $WORKDIR/share/java; \ + \ export DEBIAN_FRONTEND=noninteractive; \ - apt-get update && apt-get install -y $buildDeps --no-install-recommends; \ + runDeps=''; \ + buildDeps='curl ca-certificates'; \ + apt-get update && apt-get install -y $runDeps $buildDeps --no-install-recommends; \ \ - MAVEN_VERSION=3.5.0 PATH=$PATH:$(pwd)/maven/bin; \ - mkdir ./maven; \ - curl -SLs https://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz | tar -xzf - --strip-components=1 -C ./maven; \ + MAVEN_VERSION=3.5.0 PATH=$PATH:/opt/maven/bin; \ + mkdir -p /opt/maven; \ + curl -SLs https://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz | tar -xzf - --strip-components=1 -C /opt/maven; \ mvn --version; \ \ - mkdir ./ksql; \ - cd ./ksql; \ - curl -SLs ${ksql_repo}/archive/${ksql_version}.tar.gz \ - | tar -xzf - --strip-components=1 -C ./; \ - mvn package install; \ -echo "temp layer"; -RUN echo "temp layer"; \ - cd ..; \ - mv ~/.m2/repository/com/sree/kafka/kafka-connect-jmx/0.0.1/kafka-connect-jmx-0.0.1-jar-with-dependencies.jar ./libs/; \ - rm -rf ./ksql; \ - rm -rf ./maven ~/.m2; \ + mkdir -p /opt/src/ksql; cd /opt/src/ksql; \ + curl -SLs ${ksql_repo}/archive/${ksql_version}.tar.gz | tar -xzf - --strip-components=1 -C ./; \ + mvn package; \ \ - apt-get purge -y --auto-remove $buildDeps; \ - rm -rf /var/lib/apt/lists/*; \ - rm /var/log/dpkg.log /var/log/apt/*.log - -COPY *.properties ./config/ - -ENTRYPOINT ["./bin/connect-standalone.sh"] -CMD ["./config/worker.properties", "./config/connect-jmx.properties"] + echo "TODO cleanup, but for now we just want a ksql build to experiment with, and possibly re-build"; From d8bc453ee21cec20288eec1be15c132c449fcc21 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Mon, 2 Oct 2017 15:52:37 +0200 Subject: [PATCH 4/8] Lists some interesting build results --- ksql/Dockerfile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ksql/Dockerfile b/ksql/Dockerfile index bd0b07a..f8e7710 100644 --- a/ksql/Dockerfile +++ b/ksql/Dockerfile @@ -22,4 +22,11 @@ RUN set -ex; \ curl -SLs ${ksql_repo}/archive/${ksql_version}.tar.gz | tar -xzf - --strip-components=1 -C ./; \ mvn package; \ \ + cd $WORKDIR; \ + \ echo "TODO cleanup, but for now we just want a ksql build to experiment with, and possibly re-build"; + +RUN echo "cont'd at temp layer boundary"; set -ex; \ + cd /opt/src/ksql; \ + find . -name *-package; \ + cat ksql-examples/Dockerfile \ No newline at end of file From a1f81e5972dab0d963b8b7ff78dfc576527e7094 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Mon, 2 Oct 2017 20:38:16 +0200 Subject: [PATCH 5/8] Requires confluent-common and rest-utils; build steps copied from kafka-cp --- ksql/Dockerfile | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/ksql/Dockerfile b/ksql/Dockerfile index f8e7710..47c8564 100644 --- a/ksql/Dockerfile +++ b/ksql/Dockerfile @@ -2,6 +2,9 @@ FROM solsson/kafka-jre@sha256:61196845eafb0970cf94598fd723a66407be31cd8bab83e3a2 ENV ksql_version=dc1ad22e95793252c47f2a66656417e64e0fec21 ksql_repo=https://github.com/confluentinc/ksql +ENV CP_VERSION=3.3.0 +ENV KSQL_BUILD=0.1-SNAPSHOT + WORKDIR /usr/local RUN set -ex; \ @@ -18,15 +21,35 @@ RUN set -ex; \ curl -SLs https://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz | tar -xzf - --strip-components=1 -C /opt/maven; \ mvn --version; \ \ + mkdir -p /opt/src/common; cd /opt/src/common; \ + curl -SLs https://github.com/confluentinc/common/archive/v$CP_VERSION.tar.gz | tar -xzf - --strip-components=1 -C ./; \ + mvn install; \ + \ + mkdir -p /opt/src/rest-utils; cd /opt/src/rest-utils; \ + curl -SLs https://github.com/confluentinc/rest-utils/archive/v$CP_VERSION.tar.gz | tar -xzf - --strip-components=1 -C ./; \ + mvn install; \ + \ mkdir -p /opt/src/ksql; cd /opt/src/ksql; \ curl -SLs ${ksql_repo}/archive/${ksql_version}.tar.gz | tar -xzf - --strip-components=1 -C ./; \ mvn package; \ \ cd $WORKDIR; \ \ - echo "TODO cleanup, but for now we just want a ksql build to experiment with, and possibly re-build"; + mv /opt/src/common/package/target/common-package-$CP_VERSION-package/share/java/confluent-common ./share/java/; \ + mv /opt/src/rest-utils/package/target/rest-utils-package-$CP_VERSION-package/share/java/rest-utils ./share/java/; \ + \ + mv /opt/src/ksql/ksql-rest-app/target/ksql-rest-app-${KSQL_BUILD}-package/etc/ksql-rest-app /etc/; \ + mv /opt/src/ksql/ksql-rest-app/target/ksql-rest-app-${KSQL_BUILD}-package/bin/* ./bin/; \ + mv /opt/src/ksql/ksql-rest-app/target/ksql-rest-app-${KSQL_BUILD}-package/share/java/ksql-rest-app ./share/java/; \ + \ + #mv /opt/src/ksql/ksql-examples/target/ksql-examples-${KSQL_BUILD}-package/share/java/ksql-examples ./share/java/; \ + #mv /opt/src/ksql/ksql-cli/target/ksql-cli-${KSQL_BUILD}-package/share/java/ksql-cli ./share/java/; \ + \ + rm -Rf /opt/src /opt/maven /root/.m2; \ + \ + apt-get purge -y --auto-remove $buildDeps; \ + rm -rf /var/lib/apt/lists/*; \ + rm -rf /var/log/dpkg.log /var/log/alternatives.log /var/log/apt -RUN echo "cont'd at temp layer boundary"; set -ex; \ - cd /opt/src/ksql; \ - find . -name *-package; \ - cat ksql-examples/Dockerfile \ No newline at end of file +ENTRYPOINT ["ksql-server-start"] +CMD ["/etc/ksql-rest-app/ksqlserver.properties"] From 1a53770608741619a49786a6e702c6d57a75156d Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Mon, 2 Oct 2017 22:05:58 +0200 Subject: [PATCH 6/8] Startup in k8s would fail after connect to broker --- ksql/Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ksql/Dockerfile b/ksql/Dockerfile index 47c8564..43ca6f6 100644 --- a/ksql/Dockerfile +++ b/ksql/Dockerfile @@ -42,6 +42,9 @@ RUN set -ex; \ mv /opt/src/ksql/ksql-rest-app/target/ksql-rest-app-${KSQL_BUILD}-package/bin/* ./bin/; \ mv /opt/src/ksql/ksql-rest-app/target/ksql-rest-app-${KSQL_BUILD}-package/share/java/ksql-rest-app ./share/java/; \ \ + # fixes NoClassDefFoundError: com/google/common/collect/ImmutableList + mv -v /opt/src/ksql/ksql-rest-app/target/ksql-rest-app-${KSQL_BUILD}-development/share/java/ksql-rest-app/*guava* ./share/java/ksql-rest-app/; \ + \ #mv /opt/src/ksql/ksql-examples/target/ksql-examples-${KSQL_BUILD}-package/share/java/ksql-examples ./share/java/; \ #mv /opt/src/ksql/ksql-cli/target/ksql-cli-${KSQL_BUILD}-package/share/java/ksql-cli ./share/java/; \ \ From 9866f421c33632fde5a68f7c5a43b9724ca11a49 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Tue, 3 Oct 2017 06:27:59 +0200 Subject: [PATCH 7/8] For connecting to rest-app, from test pods etc --- ksql/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ksql/Dockerfile b/ksql/Dockerfile index 43ca6f6..72af470 100644 --- a/ksql/Dockerfile +++ b/ksql/Dockerfile @@ -45,8 +45,8 @@ RUN set -ex; \ # fixes NoClassDefFoundError: com/google/common/collect/ImmutableList mv -v /opt/src/ksql/ksql-rest-app/target/ksql-rest-app-${KSQL_BUILD}-development/share/java/ksql-rest-app/*guava* ./share/java/ksql-rest-app/; \ \ - #mv /opt/src/ksql/ksql-examples/target/ksql-examples-${KSQL_BUILD}-package/share/java/ksql-examples ./share/java/; \ - #mv /opt/src/ksql/ksql-cli/target/ksql-cli-${KSQL_BUILD}-package/share/java/ksql-cli ./share/java/; \ + # let the same image be used to connect, but don't put it in rest-app's classpath + mv /opt/src/ksql/ksql-cli/target/ksql-cli-${KSQL_BUILD}-package /opt/ksql-cli; \ \ rm -Rf /opt/src /opt/maven /root/.m2; \ \ From 299894e5f39e3ca3388427448b88d54b7c4d41a1 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Tue, 3 Oct 2017 08:46:32 +0200 Subject: [PATCH 8/8] Gets you a KSQL prompt using ksql-cli --- ksql/Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ksql/Dockerfile b/ksql/Dockerfile index 72af470..3dcf97d 100644 --- a/ksql/Dockerfile +++ b/ksql/Dockerfile @@ -47,6 +47,11 @@ RUN set -ex; \ \ # let the same image be used to connect, but don't put it in rest-app's classpath mv /opt/src/ksql/ksql-cli/target/ksql-cli-${KSQL_BUILD}-package /opt/ksql-cli; \ + for J in /usr/local/share/java/*; do ln -sv $J /opt/ksql-cli/share/java/; done; \ + # maybe we could run in place, but let's keep the rest-app install clean so we don't get conflicting jars there + rm /opt/ksql-cli/share/java/ksql-cli/slf4j-log4j12-*; \ + sed -i 's|base_dir=.*|base_dir=/opt/ksql-cli|' /usr/local/bin/ksql-cli; \ + ln -sv /opt/ksql-cli/etc/ksql-cli /opt/ksql-cli/config; \ \ rm -Rf /opt/src /opt/maven /root/.m2; \ \