diff --git a/bes/BES-9.5.2.4703.tar.gz b/bes/BES-9.5.2.4703.tar.gz
new file mode 100644
index 0000000..f83d198
Binary files /dev/null and b/bes/BES-9.5.2.4703.tar.gz differ
diff --git a/bes/Dockerfile b/bes/Dockerfile
new file mode 100644
index 0000000..ab3eb9f
--- /dev/null
+++ b/bes/Dockerfile
@@ -0,0 +1,23 @@
+FROM openjdk:11
+
+ENV BES_HOME="/bes"
+
+RUN mkdir ${BES_HOME}
+
+ADD BES-9.5.2.4703.tar.gz ${BES_HOME}/
+
+COPY entrypoint.sh ${BES_HOME}/entrypoint.sh
+
+RUN chmod +x ${BES_HOME}/entrypoint.sh
+
+RUN echo "export JAVA_HOME=/usr/local/openjdk-11" >> /etc/profile
+RUN echo "export PATH=$JAVA_HOME/bin:$PATH" >> /etc/profile
+RUN echo "export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH" >> /etc/profile
+
+WORKDIR ${BES_HOME}
+
+EXPOSE 1900
+EXPOSE 8080
+EXPOSE 8443
+
+ENTRYPOINT ["sh","-c","${BES_HOME}/entrypoint.sh"]
\ No newline at end of file
diff --git a/bes/build.sh b/bes/build.sh
new file mode 100644
index 0000000..2eb7132
--- /dev/null
+++ b/bes/build.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+docker build -t bes:9.5.2 .
\ No newline at end of file
diff --git a/bes/entrypoint.sh b/bes/entrypoint.sh
new file mode 100644
index 0000000..3b6c271
--- /dev/null
+++ b/bes/entrypoint.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+cd ${BES_HOME}/bin
+
+./iastool start --server --passport "${BES_PASSPORT:-B#2008_2108#es}" --user "${BES_ADMIN_USERNAME:-admin}" --password "${BES_ADMIN_PASSWORD:-B#2008_2108#es}"
+
+tail -f /dev/null
\ No newline at end of file
diff --git a/bes/server.config b/bes/server.config
new file mode 100644
index 0000000..ab7c493
--- /dev/null
+++ b/bes/server.config
@@ -0,0 +1,273 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -XX:MaxMetaspaceSize=2048m
+ -XX:MetaspaceSize=128m
+ -server
+ -Djava.awt.headless=true
+ -XX:+UnlockDiagnosticVMOptions
+ -XX:+LogVMOutput
+ -XX:LogFile=${com.bes.instanceRoot}/logs/jvm.log
+ -Djava.endorsed.dirs=${com.bes.installRoot}/lib/endorsed
+ -Djava.security.policy=${com.bes.instanceRoot}/conf/security/server.policy
+ -Xmx4096m
+ -Xms512m
+ -Djavax.net.ssl.keyStore=${com.bes.instanceRoot}/conf/security/keystore.jks
+ -Djavax.net.ssl.trustStore=${com.bes.instanceRoot}/conf/security/cacerts.jks
+ -Djavax.net.ssl.certificateFile=${com.bes.instanceRoot}/conf/security/cert.pem
+ -Djavax.net.ssl.certificateKeyFile=${com.bes.instanceRoot}/conf/security/key.pem
+ -Djavax.net.ssl.certificateChainFile=${com.bes.instanceRoot}/conf/security/chain.pem
+ -Djava.ext.dirs=${com.bes.javaRoot}/lib/ext${path.separator}${com.bes.javaRoot}/jre/lib/ext${path.separator}${com.bes.installRoot}/lib/ext
+ -Djavax.xml.stream.XMLInputFactory=com.bes.wstx.stax.WstxInputFactory
+ -Djdbc.drivers=org.apache.derby.jdbc.ClientDriver
+ -DANTLR_USE_DIRECT_CLASS_LOADING=true
+ -Djava.net.preferIPv4Stack=true
+ -XX:NewRatio=2
+ -XX:+HeapDumpOnOutOfMemoryError
+ -Duser.timezone=Asia/Shanghai
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dmdb/DMInstall.bin b/dmdb/DMInstall.bin
new file mode 100644
index 0000000..226fd92
Binary files /dev/null and b/dmdb/DMInstall.bin differ
diff --git a/dmdb/Dockerfile b/dmdb/Dockerfile
new file mode 100644
index 0000000..1d6475e
--- /dev/null
+++ b/dmdb/Dockerfile
@@ -0,0 +1,29 @@
+FROM ubuntu:22.04
+
+ENV DM8_TMP_PATH="/dm8-tmp"
+
+RUN mkdir -p ${DM8_TMP_PATH}
+
+COPY DMInstall.bin ${DM8_TMP_PATH}/
+
+COPY install_setting.xml ${DM8_TMP_PATH}/
+
+COPY entrypoint.sh /entrypoint.sh
+
+RUN chmod +x ${DM8_TMP_PATH}/DMInstall.bin
+
+RUN chmod +x /entrypoint.sh
+
+RUN useradd -m dmdba
+
+RUN ${DM8_TMP_PATH}/DMInstall.bin -q ${DM8_TMP_PATH}/install_setting.xml
+
+RUN rm -rf ${DM8_TMP_PATH}
+
+RUN mkdir -p /init.db
+
+WORKDIR /
+
+EXPOSE 5236
+
+ENTRYPOINT ["sh","-c","/entrypoint.sh"]
\ No newline at end of file
diff --git a/dmdb/build.sh b/dmdb/build.sh
new file mode 100644
index 0000000..131da8a
--- /dev/null
+++ b/dmdb/build.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+docker build -t dmdb:8 .
\ No newline at end of file
diff --git a/dmdb/dm.key b/dmdb/dm.key
new file mode 100644
index 0000000..af63ce0
Binary files /dev/null and b/dmdb/dm.key differ
diff --git a/dmdb/entrypoint.sh b/dmdb/entrypoint.sh
new file mode 100644
index 0000000..c5adc40
--- /dev/null
+++ b/dmdb/entrypoint.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -e
+
+DM_PATH="/opt/dmdbms"
+
+DM_DATA_PATH="${DM_PATH}/data"
+
+DB_NAME="DAMENG"
+
+DM_INI_PATH="${DM_DATA_PATH}/${DB_NAME}/dm.ini"
+
+DM_INIT_PWD="${DM_INIT_PWD:-Aa123456}"
+
+DM_LICENSE_PATH="/license/dm.key"
+
+mkdir -p ${DM_DATA_PATH}
+
+chown -R dmdba ${DM_PATH}
+
+if [ ! -f "$DM_INI_PATH" ]; then
+ echo "初始化数据库..."
+ su - dmdba -c "${DM_PATH}/bin/dminit PATH=${DM_DATA_PATH} DB_NAME=${DB_NAME} SYSDBA_PWD=${DM_INIT_PWD} SYSAUDITOR_PWD=${DM_INIT_PWD}"
+
+ if -f "$DM_LICENSE_PATH"; then
+ echo "复制许可证..."
+ cp $DM_LICENSE_PATH ${DM_PATH}/bin/dm.key
+ chown dmdba ${DM_PATH}/bin/dm.key
+ fi
+
+ echo "启动 DM Server..."
+ su - dmdba -c "${DM_PATH}/bin/dmserver ${DM_INI_PATH} &"
+
+ echo "等待 DM Server 启动..."
+ until $DM_PATH/bin/disql SYSDBA/${DM_INIT_PWD}@localhost:5236 -e "select 1 from dual;" >/dev/null 2>&1; do
+ sleep 1
+ done
+
+ echo "DM server is ready."
+
+ echo "执行初始化 SQL..."
+ for sql_file in /init.db/*.sql; do
+ echo "执行 $sql_file..."
+ $DM_PATH/bin/disql SYSDBA/${DM_INIT_PWD}@localhost:5236 \`${sql_file}
+ done
+ echo "初始化完成."
+else
+ if -f "$DM_LICENSE_PATH"; then
+ echo "复制许可证..."
+ cp $DM_LICENSE_PATH ${DM_PATH}/bin/dm.key
+ chown dmdba ${DM_PATH}/bin/dm.key
+ fi
+ echo "数据库已存在,直接启动..."
+ su - dmdba -c "${DM_PATH}/bin/dmserver ${DM_INI_PATH} &"
+fi
+
+tail -f /dev/null
diff --git a/dmdb/install_setting.xml b/dmdb/install_setting.xml
new file mode 100644
index 0000000..6d3138f
--- /dev/null
+++ b/dmdb/install_setting.xml
@@ -0,0 +1,16 @@
+
+
+
+EN
++08:00
+
+
+
+0
+
+/opt/dmdbms
+
+n
+
\ No newline at end of file
diff --git a/node/Dockerfile b/node/Dockerfile
new file mode 100644
index 0000000..564c55f
--- /dev/null
+++ b/node/Dockerfile
@@ -0,0 +1,4 @@
+FROM node:20
+
+RUN npm install -g pnpm
+
diff --git a/node/build.sh b/node/build.sh
new file mode 100644
index 0000000..293120b
--- /dev/null
+++ b/node/build.sh
@@ -0,0 +1,3 @@
+#/bin/bash
+
+docker build -t node:20-pnpm .
\ No newline at end of file
diff --git a/rabbitmq/Dockerfile b/rabbitmq/Dockerfile
new file mode 100644
index 0000000..eab1936
--- /dev/null
+++ b/rabbitmq/Dockerfile
@@ -0,0 +1,17 @@
+FROM rabbitmq:3.12-management
+
+# 复制 delayed message exchange 插件
+COPY plugins/rabbitmq_delayed_message_exchange-3.12.0.ez /opt/rabbitmq/plugins/
+
+# 复制 enabled_plugins 配置文件
+COPY enabled_plugins /etc/rabbitmq/enabled_plugins
+
+# 设置权限
+RUN chmod 644 /etc/rabbitmq/enabled_plugins && \
+ chmod 755 /opt/rabbitmq/plugins/rabbitmq_delayed_message_exchange-3.12.0.ez
+
+# 暴露端口
+EXPOSE 5672 15672
+
+# 启动 RabbitMQ
+CMD ["rabbitmq-server"]
diff --git a/rabbitmq/build.sh b/rabbitmq/build.sh
new file mode 100644
index 0000000..72a4ece
--- /dev/null
+++ b/rabbitmq/build.sh
@@ -0,0 +1,3 @@
+#/bin/bash
+
+docker build -t rabbitmq:3.12-management-local .
\ No newline at end of file
diff --git a/rabbitmq/enabled_plugins b/rabbitmq/enabled_plugins
new file mode 100644
index 0000000..85b6c20
--- /dev/null
+++ b/rabbitmq/enabled_plugins
@@ -0,0 +1 @@
+[rabbitmq_delayed_message_exchange,rabbitmq_management,rabbitmq_prometheus].
\ No newline at end of file
diff --git a/rabbitmq/plugins/rabbitmq_delayed_message_exchange-3.12.0.ez b/rabbitmq/plugins/rabbitmq_delayed_message_exchange-3.12.0.ez
new file mode 100644
index 0000000..3a2bced
Binary files /dev/null and b/rabbitmq/plugins/rabbitmq_delayed_message_exchange-3.12.0.ez differ
diff --git a/ubuntu-tools/Dockerfile b/ubuntu-tools/Dockerfile
new file mode 100644
index 0000000..149f402
--- /dev/null
+++ b/ubuntu-tools/Dockerfile
@@ -0,0 +1,7 @@
+FROM ubuntu:22.04
+
+RUN apt-get update \
+ && apt-get install -y --no-install-recommends gettext-base \
+ && rm -rf /var/lib/apt/lists/*
+
+CMD ["sh", "-c", "top"]
\ No newline at end of file
diff --git a/ubuntu-tools/build.sh b/ubuntu-tools/build.sh
new file mode 100644
index 0000000..799ccb5
--- /dev/null
+++ b/ubuntu-tools/build.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+docker build -t ubuntu-tools:22.04 .
\ No newline at end of file
diff --git a/ylgh-calculate/Dockerfile b/ylgh-calculate/Dockerfile
new file mode 100644
index 0000000..1a9da57
--- /dev/null
+++ b/ylgh-calculate/Dockerfile
@@ -0,0 +1,17 @@
+FROM openjdk:11
+
+ENV APP_DIR="/calculate"
+
+ENV JAVA_OPTS=""
+
+RUN mkdir -p ${APP_DIR}
+
+RUN mkdir -p ${APP_DIR}/logs
+
+ADD calculate.jar ${APP_DIR}/app.jar
+
+WORKDIR ${APP_DIR}
+
+EXPOSE 8080
+
+ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -Dspring.config.location=${APP_DIR}/application.properties -jar ${APP_DIR}/app.jar > ${APP_DIR}/logs/application.log 2>&1"]
diff --git a/ylgh-calculate/build.sh b/ylgh-calculate/build.sh
new file mode 100644
index 0000000..21d2014
--- /dev/null
+++ b/ylgh-calculate/build.sh
@@ -0,0 +1,3 @@
+#/bin/bash
+
+docker build -t ylgh-calculate:1.0 .
\ No newline at end of file
diff --git a/ylgh-calculate/calculate.jar b/ylgh-calculate/calculate.jar
new file mode 100644
index 0000000..c9ca2ac
Binary files /dev/null and b/ylgh-calculate/calculate.jar differ