diff --git a/Storage/alluxio/2.9.4/24.03-lts-sp1/Dockerfile b/Storage/alluxio/2.9.4/24.03-lts-sp1/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..cd3a3c74439fc76a6a2f27305c0adcdf9f5b5223
--- /dev/null
+++ b/Storage/alluxio/2.9.4/24.03-lts-sp1/Dockerfile
@@ -0,0 +1,26 @@
+ARG BASE=openeuler/openeuler:24.03-lts-sp1
+FROM ${BASE}
+
+
+ARG VERSION="2.9.4"
+ENV ALLUXIO_HOME=/opt/alluxio \
+ ALLUXIO_CONF_DIR=/etc/alluxio \
+ ALLUXIO_LOGS_DIR=/var/log/alluxio
+
+COPY entrypoint.sh /opt/docker/bin/
+COPY libexec/ /opt/docker/libexec/
+COPY conf/ ${ALLUXIO_CONF_DIR}
+
+WORKDIR ${ALLUXIO_HOME}
+RUN yum install -y java-1.8.0-openjdk-devel hostname
+RUN curl -fSL -o /tmp/alluxio.tar.gz https://downloads.alluxio.io/downloads/files/${VERSION}/alluxio-${VERSION}-bin.tar.gz
+RUN tar -zxf /tmp/alluxio.tar.gz --strip-components=1 && \
+ chown -R root:root ${ALLUXIO_HOME} && \
+ mkdir -p ${ALLUXIO_CONF_DIR} && \
+ mkdir -p ${ALLUXIO_LOGS_DIR} && \
+ chmod 755 /opt/docker/bin/entrypoint.sh
+
+ENV PATH=$PATH:${ALLUXIO_HOME}/bin
+
+ENTRYPOINT ["/opt/docker/bin/entrypoint.sh"]
+CMD ["bash"]
\ No newline at end of file
diff --git a/Storage/alluxio/2.9.4/24.03-lts-sp1/conf/alluxio-env.sh b/Storage/alluxio/2.9.4/24.03-lts-sp1/conf/alluxio-env.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ca0bc8d31be47eaa5c97dfa67aa8f6d1abbf7b31
--- /dev/null
+++ b/Storage/alluxio/2.9.4/24.03-lts-sp1/conf/alluxio-env.sh
@@ -0,0 +1,63 @@
+#!/usr/bin/env bash
+#
+# The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
+# (the "License"). You may not use this work except in compliance with the License, which is
+# available at www.apache.org/licenses/LICENSE-2.0
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+# either express or implied, as more fully set forth in the License.
+#
+# See the NOTICE file distributed with this work for information regarding copyright ownership.
+#
+
+# Copy this file as alluxio-env.sh and edit it to configure Alluxio for your
+# site. This file is sourced to launch Alluxio servers or use Alluxio shell
+# commands.
+#
+# This file is an optional approach to configure Alluxio options by setting the
+# following listed environment variables. Note that, setting this file will not
+# affect jobs (e.g., Spark job or MapReduce job) that are using Alluxio client
+# as a library. Alternatively, it is recommended to create alluxio-site.properties file,
+# which supports all the configuration options provided by Alluxio
+# (http://www.alluxio.org/documentation/en/Configuration-Settings.html),
+# and is respected by both external jobs and Alluxio servers (or shell).
+
+# The directory where Alluxio deployment is installed. (Default: the parent directory of libexec/).
+ALLUXIO_HOME=/opt/alluxio
+
+# The directory where log files are stored. (Default: ${ALLUXIO_HOME}/logs).
+# ALLUXIO_LOGS_DIR
+
+# Hostname of the master.
+# ALLUXIO_MASTER_HOSTNAME
+
+# This is now deprecated. Support will be removed in v2.0
+# ALLUXIO_MASTER_ADDRESS
+
+# The directory where a worker stores in-memory data. (Default: /mnt/ramdisk).
+# E.g. On linux, /mnt/ramdisk for ramdisk, /dev/shm for tmpFS; on MacOS, /Volumes/ramdisk for ramdisk
+# ALLUXIO_RAM_FOLDER
+
+# Address of the under filesystem address. (Default: ${ALLUXIO_HOME}/underFSStorage)
+# E.g. "/my/local/path" to use local fs, "hdfs://localhost:9000/alluxio" to use a local hdfs
+ALLUXIO_UNDERFS_ADDRESS=/mnt/journal
+
+# How much memory to use per worker. (Default: 1GB)
+# E.g. "1000MB", "2GB"
+# ALLUXIO_WORKER_MEMORY_SIZE
+
+# Config properties set for Alluxio master, worker and shell. (Default: "")
+# E.g. "-Dalluxio.master.port=39999"
+# ALLUXIO_JAVA_OPTS
+
+# Config properties set for Alluxio master daemon. (Default: "")
+# E.g. "-Dalluxio.master.port=39999"
+# ALLUXIO_MASTER_JAVA_OPTS
+
+# Config properties set for Alluxio worker daemon. (Default: "")
+# E.g. "-Dalluxio.worker.port=49999" to set worker port, "-Xms2048M -Xmx2048M" to limit the heap size of worker.
+# ALLUXIO_WORKER_JAVA_OPTS
+
+# Config properties set for Alluxio shell. (Default: "")
+# E.g. "-Dalluxio.user.file.writetype.default=CACHE_THROUGH"
+# ALLUXIO_USER_JAVA_OPTS
\ No newline at end of file
diff --git a/Storage/alluxio/2.9.4/24.03-lts-sp1/conf/core-site.xml b/Storage/alluxio/2.9.4/24.03-lts-sp1/conf/core-site.xml
new file mode 100644
index 0000000000000000000000000000000000000000..636817df02db483e1a5036a4e08ac3506b4367a0
--- /dev/null
+++ b/Storage/alluxio/2.9.4/24.03-lts-sp1/conf/core-site.xml
@@ -0,0 +1,127 @@
+
+
+
+ fs.swift.impl
+ org.apache.hadoop.fs.swift.snative.SwiftNativeFileSystem
+
+
+
+
+ fs.swift.service.dal05.auth.url
+ https://dal05.objectstorage.softlayer.net/auth/v1.0
+
+
+ fs.swift.service.dal05.http.port
+ 8080
+
+
+ fs.swift.service.dal05.public
+ true
+
+
+ fs.swift.service.dal05.location-aware
+ false
+
+
+ fs.swift.service.ibm.dal05.endpoint.prefix
+ endpoints
+
+
+ fs.swift.service.dal05.apikey
+ API_KEY
+
+
+ fs.swift.service.dal05.username
+ ACCOUNT:USER NAME
+
+
+ fs.swift.service.dal05.use.get.auth
+ true
+
+
+
+
+ fs.swift.service.swift1.location-aware
+ false
+
+
+ fs.swift.service.swift1.auth.url
+ http://127.0.0.1:5000/v2.0/tokens
+
+
+ fs.swift.service.swift1.http.port
+ 8080
+
+
+ fs.swift.service.swift1.region
+ RegionOne
+
+
+ fs.swift.service.swift1.public
+ true
+
+
+ fs.swift.service.swift1.auth.endpoint.prefix
+ endpoints
+
+
+ fs.swift.service.swift1.tenant
+ TENANT
+
+
+ fs.swift.service.swift1.password
+ PASSWORD
+
+
+ fs.swift.service.swift1.username
+ USER NAME
+
+
+
+
+ fs.swift.service.swift2.auth.url
+ http://127.0.0.1:8080/auth/v1.0
+
+
+ fs.swift.service.swift2.http.port
+ 8080
+
+
+ fs.swift.service.swift2.public
+ true
+
+
+ fs.swift.service.swift2.location-aware
+ false
+
+
+ fs.swift.service.swift2.endpoint.prefix
+ endpoints
+
+
+ fs.swift.service.swift2.apikey
+ testing
+
+
+ fs.swift.service.swift2.username
+ test:tester
+
+
+ fs.swift.service.swift2.use.get.auth
+ true
+
+
\ No newline at end of file
diff --git a/Storage/alluxio/2.9.4/24.03-lts-sp1/conf/log4j.properties b/Storage/alluxio/2.9.4/24.03-lts-sp1/conf/log4j.properties
new file mode 100644
index 0000000000000000000000000000000000000000..962e90598c604cf8201aac9d9f63e249fbc38f91
--- /dev/null
+++ b/Storage/alluxio/2.9.4/24.03-lts-sp1/conf/log4j.properties
@@ -0,0 +1,53 @@
+#
+# The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
+# (the "License"). You may not use this work except in compliance with the License, which is
+# available at www.apache.org/licenses/LICENSE-2.0
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+# either express or implied, as more fully set forth in the License.
+#
+# See the NOTICE file distributed with this work for information regarding copyright ownership.
+#
+
+# May get overridden by System Property
+
+log4j.rootLogger=INFO, ${alluxio.logger.type}
+
+log4j.appender.Console=org.apache.log4j.ConsoleAppender
+log4j.appender.Console.Target=System.out
+log4j.appender.Console.layout=org.apache.log4j.PatternLayout
+log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %-5p %c{1} (%F:%M) - %m%n
+
+# Appender for Master
+log4j.appender.MASTER_LOGGER=org.apache.log4j.ConsoleAppender
+log4j.appender.MASTER_LOGGER.Target=System.out
+log4j.appender.MASTER_LOGGER.layout=org.apache.log4j.PatternLayout
+log4j.appender.MASTER_LOGGER.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M) - %m%n
+
+# Appender for Proxy
+log4j.appender.PROXY_LOGGER=org.apache.log4j.ConsoleAppender
+log4j.appender.PROXY_LOGGER.Target=System.out
+log4j.appender.PROXY_LOGGER.layout=org.apache.log4j.PatternLayout
+log4j.appender.PROXY_LOGGER.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M) - %m%n
+
+# Appender for Workers
+log4j.appender.WORKER_LOGGER=org.apache.log4j.ConsoleAppender
+log4j.appender.WORKER_LOGGER.Target=System.out
+log4j.appender.WORKER_LOGGER.layout=org.apache.log4j.PatternLayout
+log4j.appender.WORKER_LOGGER.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M) - %m%n
+
+# Appender for User
+log4j.appender.USER_LOGGER=org.apache.log4j.RollingFileAppender
+log4j.appender.USER_LOGGER.File=${alluxio.logs.dir}/user_${user.name}.log
+log4j.appender.USER_LOGGER.MaxFileSize=10MB
+log4j.appender.USER_LOGGER.MaxBackupIndex=10
+log4j.appender.USER_LOGGER.layout=org.apache.log4j.PatternLayout
+log4j.appender.USER_LOGGER.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M) - %m%n
+
+# Appender for Fuse
+log4j.appender.FUSE_LOGGER=org.apache.log4j.RollingFileAppender
+log4j.appender.FUSE_LOGGER.File=${alluxio.logs.dir}/fuse.log
+log4j.appender.FUSE_LOGGER.MaxFileSize=10MB
+log4j.appender.FUSE_LOGGER.MaxBackupIndex=10
+log4j.appender.FUSE_LOGGER.layout=org.apache.log4j.PatternLayout
+log4j.appender.FUSE_LOGGER.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M) - %m%n
\ No newline at end of file
diff --git a/Storage/alluxio/2.9.4/24.03-lts-sp1/entrypoint.sh b/Storage/alluxio/2.9.4/24.03-lts-sp1/entrypoint.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5b594a74348480d799955cb21a90b76a7d9a4e38
--- /dev/null
+++ b/Storage/alluxio/2.9.4/24.03-lts-sp1/entrypoint.sh
@@ -0,0 +1,89 @@
+#!/bin/bash
+set -eo pipefail
+
+# Setup environment
+source /opt/docker/libexec/alluxio-init.sh
+
+
+get_env() {
+ BIN=$ALLUXIO_HOME/bin
+ ALLUXIO_LIBEXEC_DIR=${ALLUXIO_LIBEXEC_DIR:-$ALLUXIO_HOME/libexec}
+ . ${ALLUXIO_LIBEXEC_DIR}/alluxio-config.sh
+ CLASSPATH=${ALLUXIO_CLIENT_CLASSPATH}
+}
+
+
+start_worker() {
+ CLASSPATH=${ALLUXIO_SERVER_CLASSPATH}
+
+ alluxio-mount.sh Mount
+ MOUNT_FAILED=$?
+
+ if [ ${MOUNT_FAILED} -ne 0 ] ; then
+ echo "Mount failed, not starting worker" >&2
+ exit 1
+ fi
+
+ if [[ -z ${ALLUXIO_WORKER_JAVA_OPTS} ]]; then
+ ALLUXIO_WORKER_JAVA_OPTS=${ALLUXIO_JAVA_OPTS}
+ fi
+
+ echo "Starting worker @ $(hostname -f)"
+ ${JAVA} -cp ${CLASSPATH} ${ALLUXIO_WORKER_JAVA_OPTS} alluxio.worker.AlluxioWorker 2>&1
+}
+
+
+start_master() {
+ CLASSPATH=${ALLUXIO_SERVER_CLASSPATH}
+
+ if [[ -z ${ALLUXIO_MASTER_JAVA_OPTS} ]]; then
+ ALLUXIO_MASTER_JAVA_OPTS=${ALLUXIO_JAVA_OPTS}
+ fi
+
+ if [ ! -d ${ALLUXIO_MASTER_JOURNAL_FOLDER}/BlockMaster ]; then
+ mkdir -p ${ALLUXIO_MASTER_JOURNAL_FOLDER}
+ alluxio format
+ fi
+
+ echo "Starting master @ $(hostname -f)"
+ ${JAVA} -cp ${CLASSPATH} ${ALLUXIO_MASTER_JAVA_OPTS} alluxio.master.AlluxioMaster 2>&1
+}
+
+
+start_proxy() {
+ CLASSPATH=${ALLUXIO_SERVER_CLASSPATH}
+
+ if [[ -z ${ALLUXIO_PROXY_JAVA_OPTS} ]]; then
+ ALLUXIO_PROXY_JAVA_OPTS=${ALLUXIO_JAVA_OPTS}
+ fi
+
+ echo "Starting proxy @ $(hostname -f)"
+ ${JAVA} -cp ${CLASSPATH} ${ALLUXIO_PROXY_JAVA_OPTS} alluxio.proxy.AlluxioProxy 2>&1
+}
+
+
+main() {
+ # get environment
+ get_env
+
+ # ensure log/data dirs
+ #ensure_dirs
+
+ case "$1" in
+ master)
+ start_master
+ ;;
+ proxy)
+ start_proxy
+ ;;
+ worker)
+ start_worker
+ ;;
+ *)
+ exec $@
+ exit $?
+ ;;
+ esac
+}
+
+main "$@"
\ No newline at end of file
diff --git a/Storage/alluxio/2.9.4/24.03-lts-sp1/libexec/alluxio-init.sh b/Storage/alluxio/2.9.4/24.03-lts-sp1/libexec/alluxio-init.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2dd23dc6cb3ba3a5886f02e48422ff00d1428243
--- /dev/null
+++ b/Storage/alluxio/2.9.4/24.03-lts-sp1/libexec/alluxio-init.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+set -eo pipefail
+
+source /opt/docker/libexec/alluxio-vars.sh
diff --git a/Storage/alluxio/2.9.4/24.03-lts-sp1/libexec/alluxio-vars.sh b/Storage/alluxio/2.9.4/24.03-lts-sp1/libexec/alluxio-vars.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a012562a61a5608aa85dfd8c80be1a499cd7b273
--- /dev/null
+++ b/Storage/alluxio/2.9.4/24.03-lts-sp1/libexec/alluxio-vars.sh
@@ -0,0 +1,56 @@
+#!/usr/bin/env bash
+# The directory where log files are stored. (Default: ${ALLUXIO_HOME}/logs).
+# ALLUXIO_LOGS_DIR
+
+# The directory where a worker stores in-memory data. (Default: /mnt/ramdisk).
+# E.g. On linux, /mnt/ramdisk for ramdisk, /dev/shm for tmpFS; on MacOS, /Volumes/ramdisk for ramdisk
+export ALLUXIO_RAM_FOLDER=${ALLUXIO_RAM_FOLDER=/mnt/ramdisk}
+
+# Address of the under filesystem address. (Default: ${ALLUXIO_HOME}/underFSStorage)
+# E.g. "/my/local/path" to use local fs, "hdfs://localhost:9000/alluxio" to use a local hdfs
+export ALLUXIO_UNDERFS_ADDRESS=${ALLUXIO_UNDERFS_ADDRESS=${ALLUXIO_HOME}/underFSStorage}
+
+# How much memory to use per worker. (Default: 1GB)
+# E.g. "1000MB", "2GB"
+export ALLUXIO_WORKER_MEMORY_SIZE=${ALLUXIO_WORKER_MEMORY_SIZE=1GB}
+
+# Config properties set for Alluxio master, worker and shell. (Default: "")
+# E.g. "-Dalluxio.master.port=39999"
+# ALLUXIO_JAVA_OPTS
+
+# Config properties set for Alluxio master daemon. (Default: "")
+# E.g. "-Dalluxio.master.port=39999"
+# ALLUXIO_MASTER_JAVA_OPTS
+
+# Config properties set for Alluxio worker daemon. (Default: "")
+# E.g. "-Dalluxio.worker.port=49999" to set worker port, "-Xms2048M -Xmx2048M" to limit the heap size of worker.
+# ALLUXIO_WORKER_JAVA_OPTS
+
+# Config properties set for Alluxio shell. (Default: "")
+# E.g. "-Dalluxio.user.file.writetype.default=CACHE_THROUGH"
+# ALLUXIO_USER_JAVA_OPTS
+
+
+# Hostname of the master.
+export ALLUXIO_MASTER_HOSTNAME=${ALLUXIO_MASTER_HOSTNAME=localhost}
+export ALLUXIO_MASTER_PORT=${ALLUXIO_MASTER_PORT=19998}
+export ALLUXIO_MASTER_WEB_PORT=${ALLUXIO_MASTER_WEB_PORT=19999}
+export ALLUXIO_MASTER_JOURNAL_FOLDER=${ALLUXIO_MASTER_JOURNAL_FOLDER=/mnt/journal}
+
+# Hostname of the worker
+export ALLUXIO_WORKER_HOSTNAME=${ALLUXIO_WORKER_HOSTNAME=$(hostname -f)}
+export ALLUXIO_WORKER_PORT=${ALLUXIO_WORKER_PORT=29998}
+export ALLUXIO_WORKER_WEB_PORT=${ALLUXIO_WORKER_WEB_PORT=30000}
+export ALLUXIO_WORKER_DATA_PORT=${ALLUXIO_WORKER_DATA_PORT=29999}
+export ALLUXIO_WORKER_FOLDER=${ALLUXIO_WORKER_FOLDER=alluxio}
+
+# S3 properties
+export S3_PROXY_HOST=${S3_PROXY_HOST}
+export S3_PROXY_PORT=${S3_PROXY_PORT=-1}
+export S3_PROXY_USE_HTTPS=${S3_PROXY_USE_HTTPS=false}
+export S3_ENDPOINT=${S3_ENDPOINT}
+export S3_ENDPOINT_HTTP_PORT=${S3_ENDPOINT_HTTP_PORT=80}
+export S3_ENDPOINT_HTTPS_PORT=${S3_ENDPOINT_HTTPS_PORT=443}
+
+export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
+export AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
\ No newline at end of file
diff --git a/Storage/alluxio/meta.yml b/Storage/alluxio/meta.yml
new file mode 100644
index 0000000000000000000000000000000000000000..012f5a1c4fd238f319d8840768fe62f69c6adbf0
--- /dev/null
+++ b/Storage/alluxio/meta.yml
@@ -0,0 +1,2 @@
+2.9.4-oe2403sp1:
+ path: 2.9.4/24.03-lts-sp1/Dockerfile
\ No newline at end of file
diff --git a/Storage/arrow/19.0.1/24.03-lts-sp1/Dockerfile b/Storage/arrow/19.0.1/24.03-lts-sp1/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..65272a256e6cd62c4de4a3b4a90d43802fc08a15
--- /dev/null
+++ b/Storage/arrow/19.0.1/24.03-lts-sp1/Dockerfile
@@ -0,0 +1,20 @@
+ARG BASE=openeuler/openeuler:24.03-lts-sp1
+FROM ${BASE}
+
+ARG VERSION=19.0.1
+
+RUN yum install -y git gcc gcc-c++ make cmake wget && \
+ yum clean all
+
+RUN git clone -b maint-${VERSION} https://github.com/apache/arrow.git && \
+ mkdir -p /arrow/cpp/release
+
+WORKDIR /arrow/cpp/release && \
+ camke .. && \
+ make -j$(nproc) \
+ && make install DESTDIR=/usr/local
+
+RUN rm -rf /arrow
+
+WORKDIR /usr/local
+CMD ["/bin/bash"]
\ No newline at end of file
diff --git a/Storage/arrow/meta.yml b/Storage/arrow/meta.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a364baa946fba4c91333af2235695729d96b55b4
--- /dev/null
+++ b/Storage/arrow/meta.yml
@@ -0,0 +1,2 @@
+19.0.1-oe2403sp1:
+ path: 19.0.1/24.03-lts-sp1/Dockerfile
\ No newline at end of file
diff --git a/Storage/cubefs/3.5.0/24.03-lts-sp1/Dockerfile b/Storage/cubefs/3.5.0/24.03-lts-sp1/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..9c433f4a5f2e488b620efdb3dfccb535eb5462ab
--- /dev/null
+++ b/Storage/cubefs/3.5.0/24.03-lts-sp1/Dockerfile
@@ -0,0 +1,26 @@
+ARG BASE=openeuler/openeuler:24.03-lts-sp1
+FROM ${BASE} AS builder
+
+ARG TARGETARCH
+ARG VERSION=3.5.0
+ARG GO_VERSION=1.17
+
+WORKDIR /app
+RUN yum install -y git make cmake g++ maven && \
+ yum clean all && \
+ curl -fSL -o go.tar.gz https://golang.google.cn/dl/go${GO_VERSION}.linux-${TARGETARCH}.tar.gz && \
+ tar -xvf go.tar.gz -C /usr/local && \
+ rm -rf go.tar.gz
+ENV PATH="/usr/local/go/bin:${PATH}"
+
+RUN git clone -b v${VERSION} https://github.com/cubefs/cubefs.git && \
+ cd cubefs && \
+ make
+
+
+FROM ${BASE}
+
+COPY --from=builder /usr/local/go /usr/local/go
+COPY --from=builder /app/cubefs/build/bin/* /usr/local/bin/
+
+ENV PATH="/usr/local/go/bin:${PATH}"
\ No newline at end of file
diff --git a/Storage/cubefs/meta.yml b/Storage/cubefs/meta.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a6810f6be0835f8db6b678043bd32ee8e4e03b49
--- /dev/null
+++ b/Storage/cubefs/meta.yml
@@ -0,0 +1,2 @@
+3.5.0-oe2403sp1:
+ path: 3.5.0/24.03-lts-sp1/Dockerfile
\ No newline at end of file
diff --git a/Storage/drill/1.21.2/24.03-lts-sp1/Dockerfile b/Storage/drill/1.21.2/24.03-lts-sp1/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..3f5dcc8629fa734a35b784392d290ea43c043e0e
--- /dev/null
+++ b/Storage/drill/1.21.2/24.03-lts-sp1/Dockerfile
@@ -0,0 +1,37 @@
+ARG BASE=openeuler/openeuler:24.03-lts-sp1
+FROM ${BASE}
+
+ARG VERSION=1.21.2
+
+
+ARG PACKAGE=apache-drill-${VERSION}.tar.gz
+ARG PACKAGE_RUL=https://dlcdn.apache.org/drill/${VERSION}/${PACKAGE}
+
+ENV DRILL_HEAP=900M
+ENV ZOOKEEPER_HOST=zookeeper
+ENV PATH $PATH:/apache-drill/bin:/zookeeper/bin
+
+WORKDIR /
+RUN dnf install -y java-1.8.0-openjdk-devel supervisor which && \
+ yum clean all && \
+ mkdir -p /etc/supervisor.d
+
+RUN curl -fSL -o "${PACKAGE}" "$PACKAGE_RUL" && \
+ tar zxf "${PACKAGE}" && \
+ test -d "apache-drill-${VERSION}" && \
+ rm -fv "${PACKAGE}" && \
+ ln -sv "apache-drill-${VERSION}" apache-drill
+
+COPY entrypoint.sh /
+COPY drill.ini /etc/supervisor.d/
+RUN sed -i -e "s/-Xms1G/-Xms\$DRILL_MAX_HEAP/" apache-drill/conf/drill-env.sh && \
+ sed -i -e "s/^DRILL_MAX_HEAP=.*/DRILL_MAX_HEAP=\"${DRILL_HEAP}\"/" apache-drill/conf/drill-env.sh && \
+ sed -i -e "s/^DRILL_HEAP=.*/DRILL_HEAP=\"${DRILL_HEAP}\"/" apache-drill/conf/drill-env.sh && \
+ sed -i -e "s/^\([[:space:]]*\)zk.connect:.*/\\1zk.connect: \"${ZOOKEEPER_HOST}\"/" apache-drill/conf/drill-override.conf && \
+ chmod 755 /entrypoint.sh
+
+
+
+EXPOSE 8047
+
+CMD ["/entrypoint.sh"]
\ No newline at end of file
diff --git a/Storage/drill/1.21.2/24.03-lts-sp1/drill.ini b/Storage/drill/1.21.2/24.03-lts-sp1/drill.ini
new file mode 100644
index 0000000000000000000000000000000000000000..eb655ac9e59f676cac65634b73be8c71df28db8c
--- /dev/null
+++ b/Storage/drill/1.21.2/24.03-lts-sp1/drill.ini
@@ -0,0 +1,2 @@
+[program:drill]
+command=sh -c '/apache-drill/bin/drillbit.sh start && sleep 2 && tail -f /dev/null /apache-drill/log/*'
\ No newline at end of file
diff --git a/Storage/drill/1.21.2/24.03-lts-sp1/entrypoint.sh b/Storage/drill/1.21.2/24.03-lts-sp1/entrypoint.sh
new file mode 100644
index 0000000000000000000000000000000000000000..14d57b172b0b32818e7a9ac3517585380e7069fd
--- /dev/null
+++ b/Storage/drill/1.21.2/24.03-lts-sp1/entrypoint.sh
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+[ -n "${DEBUG:-}" ] && set -x
+
+export JAVA_HOME="${JAVA_HOME:-/usr}"
+export DRILL_HEAP="${DRILL_HEAP:-900M}"
+export ZOOKEEPER_HOST="${ZOOKEEPER_HOST:-zookeeper}"
+
+sed -i -e "s/-Xms1G/-Xms\$DRILL_MAX_HEAP/" apache-drill/conf/drill-env.sh
+sed -i -e "s/^DRILL_MAX_HEAP=.*/DRILL_MAX_HEAP=\"${DRILL_HEAP}\"/" apache-drill/conf/drill-env.sh
+
+sed -i -e "s/^DRILL_HEAP=.*/DRILL_HEAP=\"${DRILL_HEAP}\"/" apache-drill/conf/drill-env.sh
+sed -i -e "s/^\\([[:space:]]*\\)zk.connect:.*/\\1zk.connect: \"${ZOOKEEPER_HOST}\"/" apache-drill/conf/drill-override.conf
+
+if [ -t 0 ]; then
+ sqlline -u jdbc:drill:zk=local
+else
+ echo "
+Running non-interactively, will not open Apache Drill SQL shell
+
+For Apache Drill shell start this image with 'docker run -t -i' switches
+
+Otherwise you will need to have a separate ZooKeeper container linked (one is available from harisekhon/zookeeper) and specify:
+
+docker run -e ZOOKEEPER_HOST=:2181 supervisord -n
+"
+fi
\ No newline at end of file
diff --git a/Storage/drill/meta.yml b/Storage/drill/meta.yml
new file mode 100644
index 0000000000000000000000000000000000000000..86e897668302bd181b0dc74a0ad94885f2ef4465
--- /dev/null
+++ b/Storage/drill/meta.yml
@@ -0,0 +1,2 @@
+1.21.2-oe2403sp1:
+ path: 1.21.2/24.03-lts-sp1/Dockerfile
\ No newline at end of file
diff --git a/Storage/image-list.yml b/Storage/image-list.yml
index 3622e70b991a4d166c2513a3960301de937ac47c..5559f1e18286495def1c9c0b5116a740225e935a 100644
--- a/Storage/image-list.yml
+++ b/Storage/image-list.yml
@@ -1,3 +1,8 @@
images:
daos: daos
- kudu: kudu
\ No newline at end of file
+ kudu: kudu
+ alluxio: alluxio
+ arrow: arrow
+ cubefs: cubefs
+ drill: drill
+ lizardfs: lizardfs
\ No newline at end of file
diff --git a/Storage/lizardfs/3.12.0/24.03-lts-sp1/Dockerfile b/Storage/lizardfs/3.12.0/24.03-lts-sp1/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..61cc7af3bfcb1125665f241373db0e2ecf346238
--- /dev/null
+++ b/Storage/lizardfs/3.12.0/24.03-lts-sp1/Dockerfile
@@ -0,0 +1,18 @@
+ARG BASE=openeuler/openeuler:24.03-lts-sp1
+FROM ${BASE}
+
+ARG VERSION=3.12.0
+
+RUN yum install -y \
+ fmt fmt-devel git gcc gcc-c++ fuse-devel cmake pkgconfig unzip spdlog-devel \
+ zlib-devel asciidoc Judy-devel libdb-devel boost-devel pam-devel make && \
+ yum clean all
+
+RUN git clone https://github.com/lizardfs/lizardfs.git
+WORKDIR /lizardfs
+RUN sed -i "s/fsync(ctx, fileinfo)/fsync(ctx, fileinfo, ec)/g" src/mount/client/client.cc && \
+ sed -i "s/readlink(ctx, inode)/readlink(ctx, inode, ec)/g" src/mount/client/client.cc && \
+ sed -i "s/first(\*reinterpret_cast(first_data.data())), second(b)/first_data{}, first(\*reinterpret_cast(first_data.data())), second(b)/g" src/common/judy_map.h && \
+ ./configure && \
+ make -j4 && \
+ make install
\ No newline at end of file
diff --git a/Storage/lizardfs/meta.yml b/Storage/lizardfs/meta.yml
new file mode 100644
index 0000000000000000000000000000000000000000..64d7f797c231329bc6cbb5695384d6118b453467
--- /dev/null
+++ b/Storage/lizardfs/meta.yml
@@ -0,0 +1,2 @@
+3.12.0-oe2403sp1:
+ path: 3.12.0/24.03-lts-sp1/Dockerfile
\ No newline at end of file