diff --git a/trans-datax-job/docker-entrypoint-job.sh b/trans-datax-job/docker-entrypoint-job.sh
new file mode 100755
index 0000000..7e6e9ac
--- /dev/null
+++ b/trans-datax-job/docker-entrypoint-job.sh
@@ -0,0 +1,88 @@
+#!/bin/sh
+
+# docker-entrypoint-job.sh
+
+BASE_PWD="/home/java-app"
+
+# BASE_PWD=`pwd`
+# EANBLED_JOBS="TMP_DM_GENDER,TMP_DM_ORGTYPE,TMP_DM_ACCOUNTTYPE,TMP_DM_IDENTITYTYPE,TMP_ORGANIZE,TMP_PERSON,TMP_ACCOUNT,TMP_REGISTERED_SERVICE,TMP_WEAK_PASSWORD_DICT,TMP_ACCOUNT_QQ,TMP_ACCOUNT_WECHAT,TMP_TB_ORGANIZE,TMP_TB_USER,TMP_TB_ACCOUNT,TMP_TB_USERGROUP,TMP_TB_ROLE,TMP_TB_APPLICATION,TMP_TB_FUNCTION,TMP_TB_RIGHT,TMP_TB_ACCOUNTSECURITYEMAIL,TMP_TB_ACCOUNTSECURITYMOBILE,TMP_REF_ORGANIZEUSER,TMP_REF_USERGROUPACCOUNT,TMP_REF_ACCOUNTROLE,TMP_REF_USERGROUPROLE,TMP_REF_USERROLE,TMP_REF_APPLICATIONROLE,TMP_REF_FUNCTIONROLE,TMP_REF_RIGHTROLE"
+
+
+replace_file() {
+  local file="$1"
+  local key="$2"
+  local value="$3"
+  sed -i "s;\${$key};$value;" $file
+}
+
+is_enabled() {
+  local file="$1"
+  if [ -n "$EANBLED_JOBS" ]; then
+    if [ "$EANBLED_JOBS" = "*" ]; then
+      echo 1
+    fi
+
+    # job_name="1001.job_TMP_DM_GENDER.json"; job_name=${job_name#*job_}; job_name=${job_name%*.json}; echo $job_name;
+    job_name=${file}
+    job_name=${job_name#*job_};
+    job_name=${job_name%*.json};
+    # echo $job_name;
+
+    enable=$(echo $EANBLED_JOBS | grep "${job_name}")
+    if [[ "$enable" != "" ]]
+    then
+      echo 1
+    else
+      echo 0
+    fi
+  else
+    echo 1
+  fi
+}
+
+# 如果第一个参数是app，那么就启动执行
+if [ "$1" = 'app' ]; then
+
+  for job_file in `ls -1 ${BASE_PWD}/datax/job/*.json | sort`; do
+    echo "replace_file, job: $job_file"
+
+    enable=$(is_enabled "$job_file")
+    echo "job: $job_file enable status is ${enable}"
+    if [ "$enable" = "1" ]; then
+      echo 'replace'
+
+      if [ -n "$ORACLEREADER_UNIAUTH_USERNAME" ]; then
+        replace_file "$job_file" "ORACLEREADER_UNIAUTH_USERNAME" "$ORACLEREADER_UNIAUTH_USERNAME"
+      fi
+      if [ -n "$ORACLEREADER_UNIAUTH_PASSWORD" ]; then
+        replace_file "$job_file" "ORACLEREADER_UNIAUTH_PASSWORD" "$ORACLEREADER_UNIAUTH_PASSWORD"
+      fi
+      if [ -n "$ORACLEREADER_UNIAUTH_JDBC_URL" ]; then
+        replace_file "$job_file" "ORACLEREADER_UNIAUTH_JDBC_URL" "$ORACLEREADER_UNIAUTH_JDBC_URL"
+      fi
+
+      if [ -n "$MYSQLWRITER8_TMP_USERNAME" ]; then
+        replace_file "$job_file" "MYSQLWRITER8_TMP_USERNAME" "$MYSQLWRITER8_TMP_USERNAME"
+      fi
+      if [ -n "$MYSQLWRITER8_TMP_PASSWORD" ]; then
+        replace_file "$job_file" "MYSQLWRITER8_TMP_PASSWORD" "$MYSQLWRITER8_TMP_PASSWORD"
+      fi
+      if [ -n "$MYSQLWRITER8_TMP_JDBC_URL" ]; then
+        replace_file "$job_file" "MYSQLWRITER8_TMP_JDBC_URL" "$MYSQLWRITER8_TMP_JDBC_URL"
+      fi
+
+    else
+      echo 'rm'
+
+      rm -rf $job_file
+    fi
+
+  done
+
+  set -ex;
+  exec /home/java-app/docker-entrypoint.sh app
+else
+  set -ex;
+  exec "$@"
+fi
+
