This is an automated email from the ASF dual-hosted git repository.

timbrown pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-xtable.git


The following commit(s) were added to refs/heads/main by this push:
     new a2a93d8e added docker file (#1)
a2a93d8e is described below

commit a2a93d8e574c3b92b83cb18aead730d9b4625498
Author: Guilherme Torres Castro <[email protected]>
AuthorDate: Wed Aug 7 15:33:49 2024 -0300

    added docker file (#1)
    
    Added dockerfile
---
 Dockerfile | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 README.md  | 14 ++++++++++++++
 2 files changed, 72 insertions(+)

diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 00000000..c749651a
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,58 @@
+#  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.
+
+# syntax=docker/dockerfile:1
+
+FROM maven:3.9.8-eclipse-temurin-11-focal as package
+
+WORKDIR /build
+
+COPY ./ ./
+RUN --mount=type=cache,target=/root/.m2 \
+    MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn  -B  package 
-DskipTests 
+RUN mv xtable-utilities/target/xtable-utilities-$(mvn help:evaluate 
-Dexpression=project.version -q -DforceStdout)-bundled.jar target/app.jar
+
+FROM eclipse-temurin:17-jre-jammy AS final
+
+# Create a non-privileged user that the app will run under.
+# See https://docs.docker.com/go/dockerfile-user-best-practices/
+ARG UID=10001
+RUN adduser \
+    --disabled-password \
+    --gecos "" \
+    --home "/nonexistent" \
+    --shell "/sbin/nologin" \
+    --no-create-home \
+    --uid "${UID}" \
+    appuser
+USER appuser
+
+# Copy the executable from the "package" stage.
+COPY --from=package build/target/app.jar ./app.jar
+
+# It's necessary to added opens to run spark on java >= 17
+# 
https://stackoverflow.com/questions/73465937/apache-spark-3-3-0-breaks-on-java-17-with-cannot-access-class-sun-nio-ch-direct
+ENTRYPOINT [ 
+            "java", \
+            "--add-opens=java.base/sun.nio.hb=ALL-UNNAMED", \
+            "--add-opens=java.base/sun.nio.ch=ALL-UNNAMED", \      
+            "--add-opens=java.base/java.nio=ALL-UNNAMED", \     
+            "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED", \
+            "--add-opens=java.base/java.util=ALL-UNNAMED", \
+            "--add-opens=java.base/java.lang=ALL-UNNAMED", \
+            "-jar", \
+            "./app.jar" \ 
+        ]
diff --git a/README.md b/README.md
index a150af49..5c32cdb5 100644
--- a/README.md
+++ b/README.md
@@ -117,6 +117,20 @@ The custom hadoop configurations can be passed in with the 
`--hadoopConfig [cust
 The config in custom hadoop config file will override the default hadoop 
configurations. For an example
 of a custom hadoop config file, see 
[hadoop.xml](https://xtable.apache.org/docs/fabric#step-2-translate-source-table-to-delta-lake-format-using-apache-xtable-incubating).
 
+# Running using docker
+
+1. Build the docker image using `docker builld . -t xtable`
+2. Mount the config files on the container and run the container:
+
+```
+docker run \
+  -v ./xtable/config.yml:/xtable/config.yml \
+  -v ./xtable/core-site.xml:/xtable/core-site.xml \
+  -v ./xtable/catalog.yml:/xtable/catalog.yml \
+  xtable \
+  --datasetConfig /xtable/config.yml --hadoopConfig /xtable/core-site.xml 
--icebergCatalogConfig xtable/catalog.yml
+```
+
 # Contributing
 ## Setup
 For setting up the repo on IntelliJ, open the project and change the java 
version to Java11 in File->ProjectStructure

Reply via email to