diff --git a/.gitignore b/.gitignore index 3c96fc6..8120663 100644 --- a/.gitignore +++ b/.gitignore @@ -78,3 +78,8 @@ docker/gflags docker/Catch2 bazel-* hello_grpc_flutter/build/* + +hello-grpc-kotlin/client/build +hello-grpc-kotlin/server/build +hello-grpc-kotlin/stub/build +hello-grpc-kotlin/protos/build diff --git a/docker/README.md b/docker/README.md index 04e604f..3f30d9e 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,18 +1,18 @@ # Docker Images -https://hub.docker.com/repositories/feuyeux + | No. | Lang | Base Image | Server | Client | |:----|:-----------------------------|:---------------------------------------------------------------|:---------------------------------|:---------------------------------| | 1 | [C++](hello-grpc-cpp) | | feuyeux/grpc_server_cpp:1.0.0 | feuyeux/grpc_client_cpp:1.0.0 | | 2 | [Rust](hello-grpc-rust) | | feuyeux/grpc_server_rust:1.0.0 | feuyeux/grpc_client_rust:1.0.0 | -| 3 | [Java](hello-grpc-java) | | feuyeux/grpc_server_java:1.0.0 | feuyeux/grpc_client_java:1.0.0 | +| 3 | [Java](hello-grpc-java) | [openjdk:21-jdk-slim](java_grpc.dockerfile) | feuyeux/grpc_server_java:1.0.0 | feuyeux/grpc_client_java:1.0.0 | | 4 | [Go](hello-grpc-go) | [golang:1.23-alpine](go_grpc.dockerfile) | feuyeux/grpc_server_go:1.0.0 | feuyeux/grpc_client_go:1.0.0 | | 5 | [C#](hello-grpc-csharp) | [mcr.microsoft.com/dotnet/runtime:8.0](csharp_grpc.dockerfile) | feuyeux/grpc_server_csharp:1.0.0 | feuyeux/grpc_client_csharp:1.0.0 | | 6 | [Python](hello-grpc-python) | | feuyeux/grpc_server_python:1.0.0 | feuyeux/grpc_client_python:1.0.0 | | 7 | [Node.js](hello-grpc-nodejs) | | feuyeux/grpc_server_nodejs:1.0.0 | feuyeux/grpc_client_nodejs:1.0.0 | | 8 | [Dart](hello-grpc-dart) | | feuyeux/grpc_server_dart:1.0.0 | feuyeux/grpc_client_dart:1.0.0 | -| 9 | [Kotlin](hello-grpc-kotlin) | | feuyeux/grpc_server_kotlin:1.0.0 | feuyeux/grpc_client_kotlin:1.0.0 | +| 9 | [Kotlin](hello-grpc-kotlin) | [openjdk:21-jdk-slim](kotlin_grpc.dockerfile) | feuyeux/grpc_server_kotlin:1.0.0 | feuyeux/grpc_client_kotlin:1.0.0 | | 10 | [Swift](hello-grpc-swift) | | feuyeux/grpc_server_swift:1.0.0 | feuyeux/grpc_client_swift:1.0.0 | | 11 | [PHP](hello-grpc-php) | | feuyeux/grpc_server_php:1.0.0 | feuyeux/grpc_client_php:1.0.0 | | 12 | [TypeScript](hello-grpc-ts) | | feuyeux/grpc_server_ts:1.0.0 | feuyeux/grpc_client_ts:1.0.0 | diff --git a/docker/build.sh b/docker/all_build.sh similarity index 100% rename from docker/build.sh rename to docker/all_build.sh diff --git a/docker/push.sh b/docker/all_push.sh similarity index 100% rename from docker/push.sh rename to docker/all_push.sh diff --git a/docker/build_java.sh b/docker/build_java.sh deleted file mode 100755 index d59daae..0000000 --- a/docker/build_java.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash -set -e - -cd "$( - cd "$(dirname "$0")" >/dev/null 2>&1 - pwd -P -)/" || exit - -prepare() { - os_name="$(uname -s)" - if [ "$(uname)" = "Darwin" ]; then - export JAVA_HOME=/usr/local/opt/openjdk/libexec/openjdk.jdk/Contents/Home - elif - [ "$(expr substr "${os_name}" 1 5)" = "Linux" ] - then - echo "Linux" - elif - [ "$(expr substr "${os_name}" 1 7)" = "MSYS_NT" ] - then - export JAVA_HOME=D:/zoo/jdk-21.0.3 - elif - [ "$(expr substr "${os_name}" 1 10)" = "MINGW64_NT" ] - then - export JAVA_HOME=D:/zoo/jdk-21.0.3 - else - echo "Oops" - fi - - echo "JAVA_HOME=${JAVA_HOME}" - mvn -v - echo -} - -build_server() { - echo "~~~ build grpc server java ~~~" - cd ../hello-grpc-java - mvn clean install -DskipTests -f server_pom.xml - cp target/hello-grpc-java-server.jar ../docker/ - - cd ../docker - docker build -f grpc-server-java.dockerfile -t feuyeux/grpc_server_java:1.0.0 --pull . - rm -rf hello-grpc-java-server.jar - echo -} - -build_client() { - echo "~~~ build grpc client java ~~~" - cd ../hello-grpc-java - mvn clean install -DskipTests -f client_pom.xml - cp target/hello-grpc-java-client.jar ../docker/ - - cd ../docker - docker build -f grpc-client-java.dockerfile -t feuyeux/grpc_client_java:1.0.0 --pull . - rm -rf hello-grpc-java-client.jar - echo -} - -prepare -echo "arg=$1" - -if [ "$1" == "server" ]; then - build_server -elif [ "$1" == "client" ]; then - build_client -else - build_server - - build_client -fi diff --git a/docker/grpc-client-java.dockerfile b/docker/grpc-client-java.dockerfile deleted file mode 100644 index c2b9275..0000000 --- a/docker/grpc-client-java.dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM openjdk:21-jdk-slim -COPY hello-grpc-java-client.jar grpc-client.jar -COPY tls/client_certs /var/hello_grpc/client_certs -CMD ["java","-jar","/grpc-client.jar"] diff --git a/docker/grpc-client-kotlin.dockerfile b/docker/grpc-client-kotlin.dockerfile deleted file mode 100644 index 50349f1..0000000 --- a/docker/grpc-client-kotlin.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM openjdk:21-jdk-slim -COPY client_start.sh client_start.sh -COPY proto-client-all.jar lib/proto-client-all.jar -COPY tls/client_certs /var/hello_grpc/client_certs -ENTRYPOINT ["sh","client_start.sh"] \ No newline at end of file diff --git a/docker/grpc-server-java.dockerfile b/docker/grpc-server-java.dockerfile deleted file mode 100644 index 4493d99..0000000 --- a/docker/grpc-server-java.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM openjdk:21-jdk-slim -COPY hello-grpc-java-server.jar grpc-server.jar -COPY tls/server_certs /var/hello_grpc/server_certs -COPY tls/client_certs /var/hello_grpc/client_certs -ENTRYPOINT ["java","-jar","/grpc-server.jar"] diff --git a/docker/grpc-server-kotlin.dockerfile b/docker/grpc-server-kotlin.dockerfile deleted file mode 100644 index 6820a05..0000000 --- a/docker/grpc-server-kotlin.dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -FROM openjdk:21-jdk-slim -COPY server_start.sh server_start.sh -COPY proto-server-all.jar lib/proto-server-all.jar -COPY tls/server_certs /var/hello_grpc/server_certs -COPY tls/client_certs /var/hello_grpc/client_certs -ENTRYPOINT ["sh","server_start.sh"] \ No newline at end of file diff --git a/docker/java_build.sh b/docker/java_build.sh new file mode 100755 index 0000000..d802b0b --- /dev/null +++ b/docker/java_build.sh @@ -0,0 +1,39 @@ +#!/bin/bash +cd "$( + cd "$(dirname "$0")" >/dev/null 2>&1 + pwd -P +)/" || exit +set -e + +build_server() { + echo "~~~ build grpc server java ~~~" + cd ../hello-grpc-java + mvn clean install -DskipTests -f server_pom.xml + cp target/hello-grpc-java-server.jar ../docker/ + + cd ../docker + docker build -f java_grpc.dockerfile --target server -t feuyeux/grpc_server_java:1.0.0 --pull . + rm -rf hello-grpc-java-server.jar + echo +} + +build_client() { + echo "~~~ build grpc client java ~~~" + cd ../hello-grpc-java + mvn clean install -DskipTests -f client_pom.xml + cp target/hello-grpc-java-client.jar ../docker/ + + cd ../docker + docker build -f java_grpc.dockerfile --target client -t feuyeux/grpc_client_java:1.0.0 --pull . + rm -rf hello-grpc-java-client.jar + echo +} + +if [ "$1" == "server" ]; then + build_server +elif [ "$1" == "client" ]; then + build_client +else + build_server + build_client +fi diff --git a/docker/java_grpc.dockerfile b/docker/java_grpc.dockerfile new file mode 100644 index 0000000..1640810 --- /dev/null +++ b/docker/java_grpc.dockerfile @@ -0,0 +1,10 @@ +FROM openjdk:21-jdk-slim AS server +COPY hello-grpc-java-server.jar grpc-server.jar +COPY tls/server_certs /var/hello_grpc/server_certs +COPY tls/client_certs /var/hello_grpc/client_certs +ENTRYPOINT ["java","-jar","/grpc-server.jar"] + +FROM openjdk:21-jdk-slim AS client +COPY hello-grpc-java-client.jar grpc-client.jar +COPY tls/client_certs /var/hello_grpc/client_certs +CMD ["java","-jar","/grpc-client.jar"] diff --git a/docker/java_push.sh b/docker/java_push.sh new file mode 100644 index 0000000..25986ef --- /dev/null +++ b/docker/java_push.sh @@ -0,0 +1,3 @@ +#!/bin/bash +docker push feuyeux/grpc_server_java:1.0.0 +docker push feuyeux/grpc_client_java:1.0.0 diff --git a/docker/java_run_client.sh b/docker/java_run_client.sh new file mode 100644 index 0000000..352f494 --- /dev/null +++ b/docker/java_run_client.sh @@ -0,0 +1,13 @@ +#!/bin/bash +cd "$( + cd "$(dirname "$0")" >/dev/null 2>&1 + pwd -P +)/" || exit +export CLIENT_NAME=grpc_client_java +export CLIENT_IMG=feuyeux/$CLIENT_NAME:1.0.0 +# if there's first argument, it's secure, otherwise insecure +if [ "$1" = "secure" ]; then + sh run_tls_client.sh +else + sh run_insecure_client.sh +fi diff --git a/docker/java_run_server.sh b/docker/java_run_server.sh new file mode 100644 index 0000000..f8eda7e --- /dev/null +++ b/docker/java_run_server.sh @@ -0,0 +1,13 @@ +#!/bin/bash +cd "$( + cd "$(dirname "$0")" >/dev/null 2>&1 + pwd -P +)/" || exit +export SERVER_NAME=grpc_server_java +export SERVER_IMG=feuyeux/$SERVER_NAME:1.0.0 +# if there's first argument, it's secure, otherwise insecure +if [ "$1" = "secure" ]; then + sh run_tls_server.sh +else + sh run_insecure_server.sh +fi diff --git a/docker/build_kotlin.sh b/docker/kotlin_build.sh similarity index 58% rename from docker/build_kotlin.sh rename to docker/kotlin_build.sh index e766d60..58ea02e 100755 --- a/docker/build_kotlin.sh +++ b/docker/kotlin_build.sh @@ -6,27 +6,6 @@ cd "$( pwd -P )/" || exit -os_name="" -os_name="$(uname -s)" -if [ "$(uname)" = "Darwin" ]; then - export JAVA_HOME=/usr/local/opt/openjdk/libexec/openjdk.jdk/Contents/Home -elif - [ "$(expr substr "${os_name}" 1 5)" = "Linux" ] -then - echo "Linux" -elif - [ "$(expr substr "${os_name}" 1 7)" = "MSYS_NT" ] -then - export JAVA_HOME=D:/zoo/jdk-21 -elif - [ "$(expr substr "${os_name}" 1 10)" = "MINGW64_NT" ] -then - export JAVA_HOME=D:/zoo/jdk-21 -else - echo "Oops" -fi - -echo "JAVA_HOME=${JAVA_HOME}" gradle --version echo "~~~ build grpc server kotlin ~~~" @@ -38,7 +17,7 @@ cp build/install/server-shadow/bin/server ../../docker/server_start.sh cp build/install/server-shadow/lib/proto-server-all.jar ../../docker/proto-server-all.jar echo "build server image" cd ../../docker -docker build -f grpc-server-kotlin.dockerfile -t feuyeux/grpc_server_kotlin:1.0.0 . +docker build -f kotlin_grpc.dockerfile --target server -t feuyeux/grpc_server_kotlin:1.0.0 . rm -rf server_start.sh rm -rf proto-server-all.jar echo @@ -51,7 +30,7 @@ cp build/install/client-shadow/bin/client ../../docker/client_start.sh cp build/install/client-shadow/lib/proto-client-all.jar ../../docker/proto-client-all.jar echo "build client image" cd ../../docker -docker build -f grpc-client-kotlin.dockerfile -t feuyeux/grpc_client_kotlin:1.0.0 . +docker build -f kotlin_grpc.dockerfile --target client -t feuyeux/grpc_client_kotlin:1.0.0 . rm -rf client_start.sh rm -rf proto-client-all.jar echo diff --git a/docker/kotlin_grpc.dockerfile b/docker/kotlin_grpc.dockerfile new file mode 100644 index 0000000..ff0794f --- /dev/null +++ b/docker/kotlin_grpc.dockerfile @@ -0,0 +1,12 @@ +FROM openjdk:21-jdk-slim AS server +COPY server_start.sh server_start.sh +COPY proto-server-all.jar lib/proto-server-all.jar +COPY tls/server_certs /var/hello_grpc/server_certs +COPY tls/client_certs /var/hello_grpc/client_certs +ENTRYPOINT ["sh","server_start.sh"] + +FROM openjdk:21-jdk-slim AS client +COPY client_start.sh client_start.sh +COPY proto-client-all.jar lib/proto-client-all.jar +COPY tls/client_certs /var/hello_grpc/client_certs +ENTRYPOINT ["sh","client_start.sh"] \ No newline at end of file diff --git a/docker/kotlin_push.sh b/docker/kotlin_push.sh new file mode 100644 index 0000000..eb68af1 --- /dev/null +++ b/docker/kotlin_push.sh @@ -0,0 +1,3 @@ +#!/bin/bash +docker push feuyeux/grpc_server_kotlin:1.0.0 +docker push feuyeux/grpc_client_kotlin:1.0.0 diff --git a/docker/kotlin_run_client.sh b/docker/kotlin_run_client.sh new file mode 100644 index 0000000..436b1c3 --- /dev/null +++ b/docker/kotlin_run_client.sh @@ -0,0 +1,13 @@ +#!/bin/bash +cd "$( + cd "$(dirname "$0")" >/dev/null 2>&1 + pwd -P +)/" || exit +export CLIENT_NAME=grpc_client_kotlin +export CLIENT_IMG=feuyeux/$CLIENT_NAME:1.0.0 +# if there's first argument, it's secure, otherwise insecure +if [ "$1" = "secure" ]; then + sh run_tls_client.sh +else + sh run_insecure_client.sh +fi diff --git a/docker/kotlin_run_server.sh b/docker/kotlin_run_server.sh new file mode 100644 index 0000000..930281d --- /dev/null +++ b/docker/kotlin_run_server.sh @@ -0,0 +1,13 @@ +#!/bin/bash +cd "$( + cd "$(dirname "$0")" >/dev/null 2>&1 + pwd -P +)/" || exit +export SERVER_NAME=grpc_server_kotlin +export SERVER_IMG=feuyeux/$SERVER_NAME:1.0.0 +# if there's first argument, it's secure, otherwise insecure +if [ "$1" = "secure" ]; then + sh run_tls_server.sh +else + sh run_insecure_server.sh +fi