This is an automated email from the ASF dual-hosted git repository.
jongyoul pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/master by this push:
new 61d7e7fde9 [ZEPPELIN-6034] Write a Dockerfile for shell interpreter
(#4781)
61d7e7fde9 is described below
commit 61d7e7fde9015afd057ac2bd13d6cffa7c3ebd9f
Author: SeungYoung Oh <[email protected]>
AuthorDate: Sun Aug 11 23:38:09 2024 +0900
[ZEPPELIN-6034] Write a Dockerfile for shell interpreter (#4781)
* [ZEPPELIN-6034] Write a Dockerfile for shell interpreter image build
* [ZEPPELIN-6034] Modify shell interpreter README
* [ZEPPELIN-6034] Split the builder and runner stage in the shell image
* [ZEPPELIN-6034] Reduce the shell image size removing extra stuff
---
shell/Dockerfile | 43 +++++++++++++++++++++++++++++++++++++++++++
shell/README.md | 35 +++++++++++++++++++++++++++++++++++
2 files changed, 78 insertions(+)
diff --git a/shell/Dockerfile b/shell/Dockerfile
new file mode 100644
index 0000000000..6ae9566158
--- /dev/null
+++ b/shell/Dockerfile
@@ -0,0 +1,43 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM openjdk:11 as builder
+
+COPY . /zeppelin/
+
+WORKDIR /zeppelin
+
+RUN chmod +x ./mvnw
+
+RUN ./mvnw package -am -pl
zeppelin-interpreter-shaded,zeppelin-interpreter,shell -DskipTests
+
+
+FROM openjdk:11
+
+COPY --from=builder /zeppelin/bin /zeppelin/bin/
+COPY --from=builder /zeppelin/conf /zeppelin/conf
+
+COPY --from=builder /zeppelin/interpreter/sh /zeppelin/interpreter/sh
+COPY --from=builder /zeppelin/zeppelin-interpreter-shaded/target
/zeppelin/zeppelin-interpreter-shaded/target
+
+WORKDIR /zeppelin
+
+ENV SHELL_INTERPRETER_PORT=8081
+
+RUN chmod +x ./bin/interpreter.sh
+
+CMD ./bin/interpreter.sh -d interpreter/sh -c host.docker.internal -p
${INTERPRETER_EVENT_SERVER_PORT} -r
${SHELL_INTERPRETER_PORT}:${SHELL_INTERPRETER_PORT} -i sh-shared_process -l
./local-repo -g sh
diff --git a/shell/README.md b/shell/README.md
new file mode 100644
index 0000000000..b2f2cfa18b
--- /dev/null
+++ b/shell/README.md
@@ -0,0 +1,35 @@
+## Overview
+Shell interpreter for Apache Zeppelin
+
+## Run the interpreter with docker
+You can run the shell interpreter as a standalone docker container.
+
+### step 1. Specify the configuration for the shell interpreter
+```bash
+ # conf/interpreter.json
+
+ "sh": {
+ ...
+ "option":
+ } {
+ "remote": true,
+ "port": {INTERPRETER_PROCESS_PORT_IN_HOST},
+ "isExistingProcess": true,
+ "host": "localhost",
+ ...
+ }
+````
+
+### step 2. Build and run the shell interpreter
+```bash
+zeppelin $ ./mvnw clean install -DskipTests
+
+zeppelin $ ./bin/zeppelin-daemon.sh start # start zeppelin server.
+# check the port of the interpreter event server. you can find it by looking
for the log that starts with "InterpreterEventServer is starting at"
+
+zeppelin $ docker build -f ./shell/Dockerfile -t shell-interpreter .
+
+zeppelin $ docker run -p {INTERPRETER_PROCESS_PORT_IN_HOST}:8081 \
+ -e INTERPRETER_EVENT_SERVER_PORT={INTERPRETER_EVENT_SERVER_PORT} \
+ shell-interpreter
+```