From 8cb08aac29d547f84acc364133a175705de72854 Mon Sep 17 00:00:00 2001 From: "Zheng, Qi" Date: Fri, 3 Dec 2021 11:28:06 +0800 Subject: [PATCH] Update sofaboot demo with openjdk 8 option Signed-off-by: Zheng, Qi --- demos/sofaboot/README.md | 15 ++++++ demos/sofaboot/download_compile_sofaboot.sh | 16 +++++++ demos/sofaboot/run_sofaboot_on_occlum_jdk8.sh | 47 +++++++++++++++++++ demos/sofaboot/sofaboot_jdk8.yaml | 9 ++++ 4 files changed, 87 insertions(+) create mode 100755 demos/sofaboot/run_sofaboot_on_occlum_jdk8.sh create mode 100644 demos/sofaboot/sofaboot_jdk8.yaml diff --git a/demos/sofaboot/README.md b/demos/sofaboot/README.md index 4aa25e36..28bdd886 100644 --- a/demos/sofaboot/README.md +++ b/demos/sofaboot/README.md @@ -3,11 +3,26 @@ This project demonstrates how to execute an unmodified sofaboot projects with Occlum. 1. Download and build sofaboot project + +* Use openjdk 8 +``` +./download_compile_sofaboot.sh jdk8 +``` + +* Use openjdk 11 ``` ./download_compile_sofaboot.sh ``` + 2. Run `sofaboot sample standard web` on Occlum + +* Run with openjdk 8 +``` +./run_sofaboot_on_occlum_jdk8.sh +``` + +* Run with openjdk 11 ``` ./run_sofaboot_on_occlum.sh ``` diff --git a/demos/sofaboot/download_compile_sofaboot.sh b/demos/sofaboot/download_compile_sofaboot.sh index 1a59ad1f..78da7234 100755 --- a/demos/sofaboot/download_compile_sofaboot.sh +++ b/demos/sofaboot/download_compile_sofaboot.sh @@ -1,7 +1,23 @@ #!/bin/bash +set -e + +if [[ $1 == "jdk8" ]]; then + echo "" + echo "*** Build sofaboot demo with openjdk 8 ***" + echo "*** Make sure openjdk 8 is installed ***" + mvn -v | grep "java-8" +else + echo "" + echo "*** Build sofaboot demo with openjdk 11 ***" + echo "*** Make sure openjdk 11 is installed ***" + mvn -v | grep "java-11" +fi + if [ ! -d "sofa-boot-guides" ]; then git clone https://github.com/sofastack-guides/sofa-boot-guides.git fi + cd sofa-boot-guides/sofaboot-sample-standard/ +mvn clean mvn compile mvn package diff --git a/demos/sofaboot/run_sofaboot_on_occlum_jdk8.sh b/demos/sofaboot/run_sofaboot_on_occlum_jdk8.sh new file mode 100755 index 00000000..b292a98d --- /dev/null +++ b/demos/sofaboot/run_sofaboot_on_occlum_jdk8.sh @@ -0,0 +1,47 @@ +#!/bin/bash +set -e + +BLUE='\033[1;34m' +NC='\033[0m' + +check_file_exist() { + file=$1 + if [ ! -f ${file} ];then + echo "Error: cannot stat file '${file}'" + echo "Please see README and build it" + exit 1 + fi +} + +init_instance() { + # Init Occlum instance + rm -rf occlum_instance && occlum new occlum_instance + cd occlum_instance + new_json="$(jq '.resource_limits.user_space_size = "1680MB" | + .resource_limits.kernel_space_heap_size="64MB" | + .resource_limits.max_num_of_threads = 64 | + .process.default_heap_size = "256MB" | + .process.default_mmap_size = "1400MB" | + .entry_points = [ "/usr/lib/jvm/java-1.8-openjdk/jre/bin" ] | + .env.default = [ "LD_LIBRARY_PATH=/usr/lib/jvm/java-1.8-openjdk/jre/lib:/usr/lib/jvm/java-1.8-openjdk/lib" ]' Occlum.json)" && \ + echo "${new_json}" > Occlum.json +} + +build_sofa() { + # Copy JVM and JAR file into Occlum instance and build + rm -rf image + copy_bom -f ../sofaboot_jdk8.yaml --root image --include-dir /opt/occlum/etc/template + occlum build +} + +run_sofa() { + jar_path=./sofa-boot-guides/sofaboot-sample-standard/target/boot/sofaboot-sample-standard-web-0.0.1-SNAPSHOT-executable.jar + check_file_exist ${jar_path} + jar_file=`basename "${jar_path}"` + init_instance + build_sofa + echo -e "${BLUE}occlum run SOFABoot demo${NC}" + occlum run /usr/lib/jvm/java-1.8-openjdk/jre/bin/java -Xmx512m -XX:-UseCompressedOops -XX:MaxMetaspaceSize=64m -Dos.name=Linux -jar /usr/lib/spring/${jar_file} & +} + +run_sofa diff --git a/demos/sofaboot/sofaboot_jdk8.yaml b/demos/sofaboot/sofaboot_jdk8.yaml new file mode 100644 index 00000000..37ee2179 --- /dev/null +++ b/demos/sofaboot/sofaboot_jdk8.yaml @@ -0,0 +1,9 @@ +includes: + - base.yaml + - java-8-openjdk.yaml +targets: + # copy sofaboot jar + - target: /usr/lib/spring + copy: + - files: + - ../sofa-boot-guides/sofaboot-sample-standard/target/boot/sofaboot-sample-standard-web-0.0.1-SNAPSHOT-executable.jar