Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Flink images #5576

Merged
merged 1 commit into from
Mar 22, 2019
Merged

Update Flink images #5576

merged 1 commit into from
Mar 22, 2019

Conversation

patricklucas
Copy link
Contributor

No description provided.

@tianon
Copy link
Member

tianon commented Mar 20, 2019

Diff:
diff --git a/_bashbrew-arches b/_bashbrew-arches
index 9c05095..5d5ae49 100644
--- a/_bashbrew-arches
+++ b/_bashbrew-arches
@@ -7,6 +7,7 @@ flink:1.6 @ ppc64le
 flink:1.6 @ s390x
 flink:1.6-alpine @ amd64
 flink:1.6-alpine @ arm32v6
+flink:1.6-alpine @ arm32v7
 flink:1.6-alpine @ arm64v8
 flink:1.6-alpine @ i386
 flink:1.6-alpine @ ppc64le
@@ -20,6 +21,7 @@ flink:1.6-hadoop24 @ ppc64le
 flink:1.6-hadoop24 @ s390x
 flink:1.6-hadoop24-alpine @ amd64
 flink:1.6-hadoop24-alpine @ arm32v6
+flink:1.6-hadoop24-alpine @ arm32v7
 flink:1.6-hadoop24-alpine @ arm64v8
 flink:1.6-hadoop24-alpine @ i386
 flink:1.6-hadoop24-alpine @ ppc64le
@@ -33,6 +35,7 @@ flink:1.6-hadoop26 @ ppc64le
 flink:1.6-hadoop26 @ s390x
 flink:1.6-hadoop26-alpine @ amd64
 flink:1.6-hadoop26-alpine @ arm32v6
+flink:1.6-hadoop26-alpine @ arm32v7
 flink:1.6-hadoop26-alpine @ arm64v8
 flink:1.6-hadoop26-alpine @ i386
 flink:1.6-hadoop26-alpine @ ppc64le
@@ -46,6 +49,7 @@ flink:1.6-hadoop27 @ ppc64le
 flink:1.6-hadoop27 @ s390x
 flink:1.6-hadoop27-alpine @ amd64
 flink:1.6-hadoop27-alpine @ arm32v6
+flink:1.6-hadoop27-alpine @ arm32v7
 flink:1.6-hadoop27-alpine @ arm64v8
 flink:1.6-hadoop27-alpine @ i386
 flink:1.6-hadoop27-alpine @ ppc64le
@@ -59,6 +63,7 @@ flink:1.6-hadoop28 @ ppc64le
 flink:1.6-hadoop28 @ s390x
 flink:1.6-hadoop28-alpine @ amd64
 flink:1.6-hadoop28-alpine @ arm32v6
+flink:1.6-hadoop28-alpine @ arm32v7
 flink:1.6-hadoop28-alpine @ arm64v8
 flink:1.6-hadoop28-alpine @ i386
 flink:1.6-hadoop28-alpine @ ppc64le
@@ -72,6 +77,7 @@ flink:1.7.2-hadoop24-scala_2.11 @ ppc64le
 flink:1.7.2-hadoop24-scala_2.11 @ s390x
 flink:1.7.2-hadoop24-scala_2.11-alpine @ amd64
 flink:1.7.2-hadoop24-scala_2.11-alpine @ arm32v6
+flink:1.7.2-hadoop24-scala_2.11-alpine @ arm32v7
 flink:1.7.2-hadoop24-scala_2.11-alpine @ arm64v8
 flink:1.7.2-hadoop24-scala_2.11-alpine @ i386
 flink:1.7.2-hadoop24-scala_2.11-alpine @ ppc64le
@@ -85,6 +91,7 @@ flink:1.7.2-hadoop26-scala_2.11 @ ppc64le
 flink:1.7.2-hadoop26-scala_2.11 @ s390x
 flink:1.7.2-hadoop26-scala_2.11-alpine @ amd64
 flink:1.7.2-hadoop26-scala_2.11-alpine @ arm32v6
+flink:1.7.2-hadoop26-scala_2.11-alpine @ arm32v7
 flink:1.7.2-hadoop26-scala_2.11-alpine @ arm64v8
 flink:1.7.2-hadoop26-scala_2.11-alpine @ i386
 flink:1.7.2-hadoop26-scala_2.11-alpine @ ppc64le
@@ -98,6 +105,7 @@ flink:1.7.2-hadoop27-scala_2.11 @ ppc64le
 flink:1.7.2-hadoop27-scala_2.11 @ s390x
 flink:1.7.2-hadoop27-scala_2.11-alpine @ amd64
 flink:1.7.2-hadoop27-scala_2.11-alpine @ arm32v6
+flink:1.7.2-hadoop27-scala_2.11-alpine @ arm32v7
 flink:1.7.2-hadoop27-scala_2.11-alpine @ arm64v8
 flink:1.7.2-hadoop27-scala_2.11-alpine @ i386
 flink:1.7.2-hadoop27-scala_2.11-alpine @ ppc64le
@@ -111,12 +119,14 @@ flink:1.7.2-hadoop28-scala_2.11 @ ppc64le
 flink:1.7.2-hadoop28-scala_2.11 @ s390x
 flink:1.7.2-hadoop28-scala_2.11-alpine @ amd64
 flink:1.7.2-hadoop28-scala_2.11-alpine @ arm32v6
+flink:1.7.2-hadoop28-scala_2.11-alpine @ arm32v7
 flink:1.7.2-hadoop28-scala_2.11-alpine @ arm64v8
 flink:1.7.2-hadoop28-scala_2.11-alpine @ i386
 flink:1.7.2-hadoop28-scala_2.11-alpine @ ppc64le
 flink:1.7.2-hadoop28-scala_2.11-alpine @ s390x
 flink:alpine @ amd64
 flink:alpine @ arm32v6
+flink:alpine @ arm32v7
 flink:alpine @ arm64v8
 flink:alpine @ i386
 flink:alpine @ ppc64le
@@ -130,6 +140,7 @@ flink:hadoop24 @ ppc64le
 flink:hadoop24 @ s390x
 flink:hadoop24-alpine @ amd64
 flink:hadoop24-alpine @ arm32v6
+flink:hadoop24-alpine @ arm32v7
 flink:hadoop24-alpine @ arm64v8
 flink:hadoop24-alpine @ i386
 flink:hadoop24-alpine @ ppc64le
@@ -143,6 +154,7 @@ flink:hadoop26 @ ppc64le
 flink:hadoop26 @ s390x
 flink:hadoop26-alpine @ amd64
 flink:hadoop26-alpine @ arm32v6
+flink:hadoop26-alpine @ arm32v7
 flink:hadoop26-alpine @ arm64v8
 flink:hadoop26-alpine @ i386
 flink:hadoop26-alpine @ ppc64le
@@ -156,6 +168,7 @@ flink:hadoop27 @ ppc64le
 flink:hadoop27 @ s390x
 flink:hadoop27-alpine @ amd64
 flink:hadoop27-alpine @ arm32v6
+flink:hadoop27-alpine @ arm32v7
 flink:hadoop27-alpine @ arm64v8
 flink:hadoop27-alpine @ i386
 flink:hadoop27-alpine @ ppc64le
@@ -169,6 +182,7 @@ flink:hadoop28 @ ppc64le
 flink:hadoop28 @ s390x
 flink:hadoop28-alpine @ amd64
 flink:hadoop28-alpine @ arm32v6
+flink:hadoop28-alpine @ arm32v7
 flink:hadoop28-alpine @ arm64v8
 flink:hadoop28-alpine @ i386
 flink:hadoop28-alpine @ ppc64le
@@ -189,6 +203,7 @@ flink:scala_2.11 @ ppc64le
 flink:scala_2.11 @ s390x
 flink:scala_2.11-alpine @ amd64
 flink:scala_2.11-alpine @ arm32v6
+flink:scala_2.11-alpine @ arm32v7
 flink:scala_2.11-alpine @ arm64v8
 flink:scala_2.11-alpine @ i386
 flink:scala_2.11-alpine @ ppc64le
diff --git a/flink_1.6-alpine/docker-entrypoint.sh b/flink_1.6-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.6-alpine/docker-entrypoint.sh
+++ b/flink_1.6-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.6-hadoop24-alpine/docker-entrypoint.sh b/flink_1.6-hadoop24-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.6-hadoop24-alpine/docker-entrypoint.sh
+++ b/flink_1.6-hadoop24-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.6-hadoop24/docker-entrypoint.sh b/flink_1.6-hadoop24/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.6-hadoop24/docker-entrypoint.sh
+++ b/flink_1.6-hadoop24/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.6-hadoop26-alpine/docker-entrypoint.sh b/flink_1.6-hadoop26-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.6-hadoop26-alpine/docker-entrypoint.sh
+++ b/flink_1.6-hadoop26-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.6-hadoop26/docker-entrypoint.sh b/flink_1.6-hadoop26/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.6-hadoop26/docker-entrypoint.sh
+++ b/flink_1.6-hadoop26/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.6-hadoop27-alpine/docker-entrypoint.sh b/flink_1.6-hadoop27-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.6-hadoop27-alpine/docker-entrypoint.sh
+++ b/flink_1.6-hadoop27-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.6-hadoop27/docker-entrypoint.sh b/flink_1.6-hadoop27/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.6-hadoop27/docker-entrypoint.sh
+++ b/flink_1.6-hadoop27/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.6-hadoop28-alpine/docker-entrypoint.sh b/flink_1.6-hadoop28-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.6-hadoop28-alpine/docker-entrypoint.sh
+++ b/flink_1.6-hadoop28-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.6-hadoop28/docker-entrypoint.sh b/flink_1.6-hadoop28/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.6-hadoop28/docker-entrypoint.sh
+++ b/flink_1.6-hadoop28/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.6/docker-entrypoint.sh b/flink_1.6/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.6/docker-entrypoint.sh
+++ b/flink_1.6/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.7.2-hadoop24-scala_2.11-alpine/KEYS b/flink_1.7.2-hadoop24-scala_2.11-alpine/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_1.7.2-hadoop24-scala_2.11-alpine/KEYS
+++ b/flink_1.7.2-hadoop24-scala_2.11-alpine/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_1.7.2-hadoop24-scala_2.11-alpine/docker-entrypoint.sh b/flink_1.7.2-hadoop24-scala_2.11-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.7.2-hadoop24-scala_2.11-alpine/docker-entrypoint.sh
+++ b/flink_1.7.2-hadoop24-scala_2.11-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.7.2-hadoop24-scala_2.11/KEYS b/flink_1.7.2-hadoop24-scala_2.11/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_1.7.2-hadoop24-scala_2.11/KEYS
+++ b/flink_1.7.2-hadoop24-scala_2.11/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_1.7.2-hadoop24-scala_2.11/docker-entrypoint.sh b/flink_1.7.2-hadoop24-scala_2.11/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.7.2-hadoop24-scala_2.11/docker-entrypoint.sh
+++ b/flink_1.7.2-hadoop24-scala_2.11/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.7.2-hadoop26-scala_2.11-alpine/KEYS b/flink_1.7.2-hadoop26-scala_2.11-alpine/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_1.7.2-hadoop26-scala_2.11-alpine/KEYS
+++ b/flink_1.7.2-hadoop26-scala_2.11-alpine/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_1.7.2-hadoop26-scala_2.11-alpine/docker-entrypoint.sh b/flink_1.7.2-hadoop26-scala_2.11-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.7.2-hadoop26-scala_2.11-alpine/docker-entrypoint.sh
+++ b/flink_1.7.2-hadoop26-scala_2.11-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.7.2-hadoop26-scala_2.11/KEYS b/flink_1.7.2-hadoop26-scala_2.11/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_1.7.2-hadoop26-scala_2.11/KEYS
+++ b/flink_1.7.2-hadoop26-scala_2.11/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFxlfJMBEADTeynT8K8y7ed2vkpxE3fbjDcF7YCranB7C46o3v6N/S6oSdct
+RVD6DF8Q8eTH9GVSInBm2Robt3BS35hQoCbz+cdWgiBdPvHV58rJgJfFZfAfBexQ
++LOG/pR5iO3f7O4zYbCBjSdOj9vQRm3cccqJB6hwGvCKmEzBSf14d8Z87Gk/KQK8
+detj1op7tYiuRVBc5AHArHUdrc90Uu9ETMDH8nFllSlP5XhSR4qlWtegPoC3HMHK
+taIIJZ1Akt57030kAeH9dC4Bbj7SDOAoyPMxOmRABRWLub/LaNxtCr5P+Qhg6eyb
+j16XZkPYcjbsPGiJlGw8h0m3Vj8YJVYk8NwTyf8Opihdtz47ZDDbiUX5Cp3Vzk1d
+nNwDxQyF9rV+Gx+uBErh8V6GF4Lmuc4A8ofBt9yH1rb8KnPrKrmTa4kbKCeAwe6c
+s/aaTgtouzG8YVvo/XB3nSp/H/TKg5WcF2Je1SiYKWpNUJHBCbshljHL56ttjGgz
+kqK+VnWpCwminnPJPsMxZJj+lgYYnFOkEzyN+68eGwNJF99j86pluNSytJLETfzS
+TKsfhlzz8XlQmdbi19JpiNZL/pmna7Pb8orOWe2TSdV9F87lfMzsW8zd7Df8B/mO
+eZEgGbX33F9eMlW0VDhkIPXFI8U9GYwRZv1wp5bOAWmyn6GMWE+gc3cRAQARAQAB
+tC1qaW5jaGVuZyBTdW4gKGppbmNoZW5nKSA8amluY2hlbmdAYXBhY2hlLm9yZz6J
+Ak4EEwEIADgWIQSP6h7p0ASMDMxwt1cyEbBwO3nqDgUCXGV8kwIbAwULCQgHAgYV
+CgkICwIEFgIDAQIeAQIXgAAKCRAyEbBwO3nqDvtaEACdPuf0R3SL7Z1QgnD0ZR7y
+uHoyOlZsjLZHyZe18/6cDlgONL4ndGrYadIOx4g7MOhDkqH4cZn7MBE42iiI0fxZ
+1ZWazSSclGAnoQ9Ciiza9ZsVIlLY37H/Lw8VzjEMc4P7HniOteS54MyMKEBuSUyG
+I8EQUxdc/ioL0uTH0UE3HzJFiZRAU8KTs2f5dzNCGXMRs1jTFs94lcslM9xE7yZQ
+o1v4hi+YX5CwRBH0/xox6CDg3R4JPh/iiz45e3QueJYViuGcaGFzPEQAvkAGDZAl
+STnqgfTLqn4WD3CO/5ZFqMNMf8OKfBbQ7vopoWGUM9wI3U6yS1gGn/SQBS8zChdx
+Qy9s+xaEDOtJIKWym0WO5L71qDHITDvNw9fRgbdHIo2Ih4NHjO4FvFtu2nBk3qpv
+ZUYlKsn+o2dvggxgA9jtlVf3qVL9IxUd+O9KgAXRpcRS/WYOK1m8q5VWKBepfd72
+/376tDapjI8eqektL0Va9beJUXZ2uYIY1fOaXtqZZVQ/paAeN/+/4gwd2CrimiLn
+0zPtiLXQYaF7f1DE+TQbizwB05T/LCjdefFOPxNa6WF41Cttyy2Cbm+s6yXfC1Fk
+42OCKQxxR3mElEUeVes9NdcBNkLTYko9+FqNkX9T/Ub3NU7q7EeSxlGPnG3d5Oa9
+DpaG57j2VzcxDDpBwDN5H7kCDQRcZXyTARAAzqnDcN9ZB+m4zI8dfi5LIEzDvhCD
+u2UhJ4lNPVsCJAVDahPPtHC688ExHcNSXMhgbB/X4OtESC1ySkU3FCz2CBAiJMr2
+jY8RI2Kle+RkYOGPyNGhmzIETAo2opQVqOn4oHOX6FlNbeJf/viAbkhYKQxTeTBb
+QoacBs4xAyBZaCsfuHs73WBCjWK4THCCUU7Ww4pPwWBS9oQTN4iAilVdmKuT+AHj
+tAxQTiNWdMCMR4UcFIs1KDFe+91KfFbHz+q/0eyTzs6/AmkHZ4NlWoqBVYFjEybi
+2VtkepaKWTbjdccOoOS+SunDdFlIkxG97UckxhRC1KKIWF52lAO2qMR2YQck47FN
+8Fn/+WzybEmDZMPPkdSGDWNbcEE6hzEqkz6LKqWJx6WiQrAePljacwY2wU97ZbIs
+7QMFh1czeMQ4ZcoZdVwy300uL4zAb+3k0lVdNv3xMWTJnwBHsrw02QNHilF/7kc9
+g0qEAuCc9JTFwZN+L6TMtU2W1B13N1zS5yCLURZzQTcY7hdFNV0qYvGPYknQmDbD
+wkHVeFQPYcJw47tnijYhVjUA+Yh7d19m3bmfXCBUf6YWwy6rE40srT+cOZTHq9EQ
++oD1A19BrkAy1Vpoo/4f4s3RmvwYuPefjoA+dd3fy+2YF5K/J//hQG1rlgQhzBdP
+3AWsKwMPwf2xaKUAEQEAAYkCNgQYAQgAIBYhBI/qHunQBIwMzHC3VzIRsHA7eeoO
+BQJcZXyTAhsMAAoJEDIRsHA7eeoO72wP/0+u1SEVOO4Fxayli46LPDWD+aid7W8O
+oS7lq0oYQ9hY4fEtB8KPgI2VO5TsXwSN9Np5WttHntIZBf7F/701V2aysxEGsewd
+kakYrwA8JO/zuvSJF5fSanG+jBh9n/Q21aRVtduOkuNjrxGroq/1gDodHfIhfV77
+A91a4le2JB+qHCZhWpRltBvxY7QlboFh53TgSoSb+7K6t4tFKWeUHtyWGMr3Qj1t
+Pc0hhx/pFhb5AsvWBVK4gy1Kp9SXLCQJS7q5NGdV5eQGN7FsAwQxKLM33k4t+oDV
+eHPju/WM41d80kuoM/XFDdI00/3IPqY6EGBSw/w1YglTbHiXxoH1LuCCSsbvTCbD
+UvLJKcMZ0iEB9IPX1X44i6aHhG4WFkeZzMJp4VJIZH9YbLceBund3HkwZSXoBlUd
+vI3a1XsmJkhW0KeyWyIPSJNAcfim0ze5/APbsc6EFX7IlUgDvkmjVP3RibQ2/AWi
+JB6SGfsXynHvmIDscjkkokHodBX5ZUmEdSCuZUALJoUd5x/bbJS7oLDJExa+QrLb
+/RPNyfZCzwgbG1uqr4o6svvNRYWtW2rHRlov6PumxVxQKz+10xxUz0VMwr0D1VSx
+LQgKqYAdO3htQj0mnCfcfujgQdWN/v9TszuVCpECH9gHIfiXqQ1ywXCOSLl+3a9/
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_1.7.2-hadoop26-scala_2.11/docker-entrypoint.sh b/flink_1.7.2-hadoop26-scala_2.11/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.7.2-hadoop26-scala_2.11/docker-entrypoint.sh
+++ b/flink_1.7.2-hadoop26-scala_2.11/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.7.2-hadoop27-scala_2.11-alpine/KEYS b/flink_1.7.2-hadoop27-scala_2.11-alpine/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_1.7.2-hadoop27-scala_2.11-alpine/KEYS
+++ b/flink_1.7.2-hadoop27-scala_2.11-alpine/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_1.7.2-hadoop27-scala_2.11-alpine/docker-entrypoint.sh b/flink_1.7.2-hadoop27-scala_2.11-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.7.2-hadoop27-scala_2.11-alpine/docker-entrypoint.sh
+++ b/flink_1.7.2-hadoop27-scala_2.11-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.7.2-hadoop27-scala_2.11/KEYS b/flink_1.7.2-hadoop27-scala_2.11/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_1.7.2-hadoop27-scala_2.11/KEYS
+++ b/flink_1.7.2-hadoop27-scala_2.11/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_1.7.2-hadoop27-scala_2.11/docker-entrypoint.sh b/flink_1.7.2-hadoop27-scala_2.11/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.7.2-hadoop27-scala_2.11/docker-entrypoint.sh
+++ b/flink_1.7.2-hadoop27-scala_2.11/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.7.2-hadoop28-scala_2.11-alpine/KEYS b/flink_1.7.2-hadoop28-scala_2.11-alpine/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_1.7.2-hadoop28-scala_2.11-alpine/KEYS
+++ b/flink_1.7.2-hadoop28-scala_2.11-alpine/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_1.7.2-hadoop28-scala_2.11-alpine/docker-entrypoint.sh b/flink_1.7.2-hadoop28-scala_2.11-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.7.2-hadoop28-scala_2.11-alpine/docker-entrypoint.sh
+++ b/flink_1.7.2-hadoop28-scala_2.11-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_1.7.2-hadoop28-scala_2.11/KEYS b/flink_1.7.2-hadoop28-scala_2.11/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_1.7.2-hadoop28-scala_2.11/KEYS
+++ b/flink_1.7.2-hadoop28-scala_2.11/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_1.7.2-hadoop28-scala_2.11/docker-entrypoint.sh b/flink_1.7.2-hadoop28-scala_2.11/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_1.7.2-hadoop28-scala_2.11/docker-entrypoint.sh
+++ b/flink_1.7.2-hadoop28-scala_2.11/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_alpine/KEYS b/flink_alpine/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_alpine/KEYS
+++ b/flink_alpine/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_alpine/docker-entrypoint.sh b/flink_alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_alpine/docker-entrypoint.sh
+++ b/flink_alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_hadoop24-alpine/KEYS b/flink_hadoop24-alpine/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_hadoop24-alpine/KEYS
+++ b/flink_hadoop24-alpine/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFxlfJMBEADTeynT8K8y7ed2vkpxE3fbjDcF7YCranB7C46o3v6N/S6oSdct
+RVD6DF8Q8eTH9GVSInBm2Robt3BS35hQoCbz+cdWgiBdPvHV58rJgJfFZfAfBexQ
++LOG/pR5iO3f7O4zYbCBjSdOj9vQRm3cccqJB6hwGvCKmEzBSf14d8Z87Gk/KQK8
+detj1op7tYiuRVBc5AHArHUdrc90Uu9ETMDH8nFllSlP5XhSR4qlWtegPoC3HMHK
+taIIJZ1Akt57030kAeH9dC4Bbj7SDOAoyPMxOmRABRWLub/LaNxtCr5P+Qhg6eyb
+j16XZkPYcjbsPGiJlGw8h0m3Vj8YJVYk8NwTyf8Opihdtz47ZDDbiUX5Cp3Vzk1d
+nNwDxQyF9rV+Gx+uBErh8V6GF4Lmuc4A8ofBt9yH1rb8KnPrKrmTa4kbKCeAwe6c
+s/aaTgtouzG8YVvo/XB3nSp/H/TKg5WcF2Je1SiYKWpNUJHBCbshljHL56ttjGgz
+kqK+VnWpCwminnPJPsMxZJj+lgYYnFOkEzyN+68eGwNJF99j86pluNSytJLETfzS
+TKsfhlzz8XlQmdbi19JpiNZL/pmna7Pb8orOWe2TSdV9F87lfMzsW8zd7Df8B/mO
+eZEgGbX33F9eMlW0VDhkIPXFI8U9GYwRZv1wp5bOAWmyn6GMWE+gc3cRAQARAQAB
+tC1qaW5jaGVuZyBTdW4gKGppbmNoZW5nKSA8amluY2hlbmdAYXBhY2hlLm9yZz6J
+Ak4EEwEIADgWIQSP6h7p0ASMDMxwt1cyEbBwO3nqDgUCXGV8kwIbAwULCQgHAgYV
+CgkICwIEFgIDAQIeAQIXgAAKCRAyEbBwO3nqDvtaEACdPuf0R3SL7Z1QgnD0ZR7y
+uHoyOlZsjLZHyZe18/6cDlgONL4ndGrYadIOx4g7MOhDkqH4cZn7MBE42iiI0fxZ
+1ZWazSSclGAnoQ9Ciiza9ZsVIlLY37H/Lw8VzjEMc4P7HniOteS54MyMKEBuSUyG
+I8EQUxdc/ioL0uTH0UE3HzJFiZRAU8KTs2f5dzNCGXMRs1jTFs94lcslM9xE7yZQ
+o1v4hi+YX5CwRBH0/xox6CDg3R4JPh/iiz45e3QueJYViuGcaGFzPEQAvkAGDZAl
+STnqgfTLqn4WD3CO/5ZFqMNMf8OKfBbQ7vopoWGUM9wI3U6yS1gGn/SQBS8zChdx
+Qy9s+xaEDOtJIKWym0WO5L71qDHITDvNw9fRgbdHIo2Ih4NHjO4FvFtu2nBk3qpv
+ZUYlKsn+o2dvggxgA9jtlVf3qVL9IxUd+O9KgAXRpcRS/WYOK1m8q5VWKBepfd72
+/376tDapjI8eqektL0Va9beJUXZ2uYIY1fOaXtqZZVQ/paAeN/+/4gwd2CrimiLn
+0zPtiLXQYaF7f1DE+TQbizwB05T/LCjdefFOPxNa6WF41Cttyy2Cbm+s6yXfC1Fk
+42OCKQxxR3mElEUeVes9NdcBNkLTYko9+FqNkX9T/Ub3NU7q7EeSxlGPnG3d5Oa9
+DpaG57j2VzcxDDpBwDN5H7kCDQRcZXyTARAAzqnDcN9ZB+m4zI8dfi5LIEzDvhCD
+u2UhJ4lNPVsCJAVDahPPtHC688ExHcNSXMhgbB/X4OtESC1ySkU3FCz2CBAiJMr2
+jY8RI2Kle+RkYOGPyNGhmzIETAo2opQVqOn4oHOX6FlNbeJf/viAbkhYKQxTeTBb
+QoacBs4xAyBZaCsfuHs73WBCjWK4THCCUU7Ww4pPwWBS9oQTN4iAilVdmKuT+AHj
+tAxQTiNWdMCMR4UcFIs1KDFe+91KfFbHz+q/0eyTzs6/AmkHZ4NlWoqBVYFjEybi
+2VtkepaKWTbjdccOoOS+SunDdFlIkxG97UckxhRC1KKIWF52lAO2qMR2YQck47FN
+8Fn/+WzybEmDZMPPkdSGDWNbcEE6hzEqkz6LKqWJx6WiQrAePljacwY2wU97ZbIs
+7QMFh1czeMQ4ZcoZdVwy300uL4zAb+3k0lVdNv3xMWTJnwBHsrw02QNHilF/7kc9
+g0qEAuCc9JTFwZN+L6TMtU2W1B13N1zS5yCLURZzQTcY7hdFNV0qYvGPYknQmDbD
+wkHVeFQPYcJw47tnijYhVjUA+Yh7d19m3bmfXCBUf6YWwy6rE40srT+cOZTHq9EQ
++oD1A19BrkAy1Vpoo/4f4s3RmvwYuPefjoA+dd3fy+2YF5K/J//hQG1rlgQhzBdP
+3AWsKwMPwf2xaKUAEQEAAYkCNgQYAQgAIBYhBI/qHunQBIwMzHC3VzIRsHA7eeoO
+BQJcZXyTAhsMAAoJEDIRsHA7eeoO72wP/0+u1SEVOO4Fxayli46LPDWD+aid7W8O
+oS7lq0oYQ9hY4fEtB8KPgI2VO5TsXwSN9Np5WttHntIZBf7F/701V2aysxEGsewd
+kakYrwA8JO/zuvSJF5fSanG+jBh9n/Q21aRVtduOkuNjrxGroq/1gDodHfIhfV77
+A91a4le2JB+qHCZhWpRltBvxY7QlboFh53TgSoSb+7K6t4tFKWeUHtyWGMr3Qj1t
+Pc0hhx/pFhb5AsvWBVK4gy1Kp9SXLCQJS7q5NGdV5eQGN7FsAwQxKLM33k4t+oDV
+eHPju/WM41d80kuoM/XFDdI00/3IPqY6EGBSw/w1YglTbHiXxoH1LuCCSsbvTCbD
+UvLJKcMZ0iEB9IPX1X44i6aHhG4WFkeZzMJp4VJIZH9YbLceBund3HkwZSXoBlUd
+vI3a1XsmJkhW0KeyWyIPSJNAcfim0ze5/APbsc6EFX7IlUgDvkmjVP3RibQ2/AWi
+JB6SGfsXynHvmIDscjkkokHodBX5ZUmEdSCuZUALJoUd5x/bbJS7oLDJExa+QrLb
+/RPNyfZCzwgbG1uqr4o6svvNRYWtW2rHRlov6PumxVxQKz+10xxUz0VMwr0D1VSx
+LQgKqYAdO3htQj0mnCfcfujgQdWN/v9TszuVCpECH9gHIfiXqQ1ywXCOSLl+3a9/
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_hadoop24-alpine/docker-entrypoint.sh b/flink_hadoop24-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_hadoop24-alpine/docker-entrypoint.sh
+++ b/flink_hadoop24-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_hadoop24/KEYS b/flink_hadoop24/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_hadoop24/KEYS
+++ b/flink_hadoop24/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_hadoop24/docker-entrypoint.sh b/flink_hadoop24/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_hadoop24/docker-entrypoint.sh
+++ b/flink_hadoop24/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_hadoop26-alpine/KEYS b/flink_hadoop26-alpine/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_hadoop26-alpine/KEYS
+++ b/flink_hadoop26-alpine/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFxlfJMBEADTeynT8K8y7ed2vkpxE3fbjDcF7YCranB7C46o3v6N/S6oSdct
+RVD6DF8Q8eTH9GVSInBm2Robt3BS35hQoCbz+cdWgiBdPvHV58rJgJfFZfAfBexQ
++LOG/pR5iO3f7O4zYbCBjSdOj9vQRm3cccqJB6hwGvCKmEzBSf14d8Z87Gk/KQK8
+detj1op7tYiuRVBc5AHArHUdrc90Uu9ETMDH8nFllSlP5XhSR4qlWtegPoC3HMHK
+taIIJZ1Akt57030kAeH9dC4Bbj7SDOAoyPMxOmRABRWLub/LaNxtCr5P+Qhg6eyb
+j16XZkPYcjbsPGiJlGw8h0m3Vj8YJVYk8NwTyf8Opihdtz47ZDDbiUX5Cp3Vzk1d
+nNwDxQyF9rV+Gx+uBErh8V6GF4Lmuc4A8ofBt9yH1rb8KnPrKrmTa4kbKCeAwe6c
+s/aaTgtouzG8YVvo/XB3nSp/H/TKg5WcF2Je1SiYKWpNUJHBCbshljHL56ttjGgz
+kqK+VnWpCwminnPJPsMxZJj+lgYYnFOkEzyN+68eGwNJF99j86pluNSytJLETfzS
+TKsfhlzz8XlQmdbi19JpiNZL/pmna7Pb8orOWe2TSdV9F87lfMzsW8zd7Df8B/mO
+eZEgGbX33F9eMlW0VDhkIPXFI8U9GYwRZv1wp5bOAWmyn6GMWE+gc3cRAQARAQAB
+tC1qaW5jaGVuZyBTdW4gKGppbmNoZW5nKSA8amluY2hlbmdAYXBhY2hlLm9yZz6J
+Ak4EEwEIADgWIQSP6h7p0ASMDMxwt1cyEbBwO3nqDgUCXGV8kwIbAwULCQgHAgYV
+CgkICwIEFgIDAQIeAQIXgAAKCRAyEbBwO3nqDvtaEACdPuf0R3SL7Z1QgnD0ZR7y
+uHoyOlZsjLZHyZe18/6cDlgONL4ndGrYadIOx4g7MOhDkqH4cZn7MBE42iiI0fxZ
+1ZWazSSclGAnoQ9Ciiza9ZsVIlLY37H/Lw8VzjEMc4P7HniOteS54MyMKEBuSUyG
+I8EQUxdc/ioL0uTH0UE3HzJFiZRAU8KTs2f5dzNCGXMRs1jTFs94lcslM9xE7yZQ
+o1v4hi+YX5CwRBH0/xox6CDg3R4JPh/iiz45e3QueJYViuGcaGFzPEQAvkAGDZAl
+STnqgfTLqn4WD3CO/5ZFqMNMf8OKfBbQ7vopoWGUM9wI3U6yS1gGn/SQBS8zChdx
+Qy9s+xaEDOtJIKWym0WO5L71qDHITDvNw9fRgbdHIo2Ih4NHjO4FvFtu2nBk3qpv
+ZUYlKsn+o2dvggxgA9jtlVf3qVL9IxUd+O9KgAXRpcRS/WYOK1m8q5VWKBepfd72
+/376tDapjI8eqektL0Va9beJUXZ2uYIY1fOaXtqZZVQ/paAeN/+/4gwd2CrimiLn
+0zPtiLXQYaF7f1DE+TQbizwB05T/LCjdefFOPxNa6WF41Cttyy2Cbm+s6yXfC1Fk
+42OCKQxxR3mElEUeVes9NdcBNkLTYko9+FqNkX9T/Ub3NU7q7EeSxlGPnG3d5Oa9
+DpaG57j2VzcxDDpBwDN5H7kCDQRcZXyTARAAzqnDcN9ZB+m4zI8dfi5LIEzDvhCD
+u2UhJ4lNPVsCJAVDahPPtHC688ExHcNSXMhgbB/X4OtESC1ySkU3FCz2CBAiJMr2
+jY8RI2Kle+RkYOGPyNGhmzIETAo2opQVqOn4oHOX6FlNbeJf/viAbkhYKQxTeTBb
+QoacBs4xAyBZaCsfuHs73WBCjWK4THCCUU7Ww4pPwWBS9oQTN4iAilVdmKuT+AHj
+tAxQTiNWdMCMR4UcFIs1KDFe+91KfFbHz+q/0eyTzs6/AmkHZ4NlWoqBVYFjEybi
+2VtkepaKWTbjdccOoOS+SunDdFlIkxG97UckxhRC1KKIWF52lAO2qMR2YQck47FN
+8Fn/+WzybEmDZMPPkdSGDWNbcEE6hzEqkz6LKqWJx6WiQrAePljacwY2wU97ZbIs
+7QMFh1czeMQ4ZcoZdVwy300uL4zAb+3k0lVdNv3xMWTJnwBHsrw02QNHilF/7kc9
+g0qEAuCc9JTFwZN+L6TMtU2W1B13N1zS5yCLURZzQTcY7hdFNV0qYvGPYknQmDbD
+wkHVeFQPYcJw47tnijYhVjUA+Yh7d19m3bmfXCBUf6YWwy6rE40srT+cOZTHq9EQ
++oD1A19BrkAy1Vpoo/4f4s3RmvwYuPefjoA+dd3fy+2YF5K/J//hQG1rlgQhzBdP
+3AWsKwMPwf2xaKUAEQEAAYkCNgQYAQgAIBYhBI/qHunQBIwMzHC3VzIRsHA7eeoO
+BQJcZXyTAhsMAAoJEDIRsHA7eeoO72wP/0+u1SEVOO4Fxayli46LPDWD+aid7W8O
+oS7lq0oYQ9hY4fEtB8KPgI2VO5TsXwSN9Np5WttHntIZBf7F/701V2aysxEGsewd
+kakYrwA8JO/zuvSJF5fSanG+jBh9n/Q21aRVtduOkuNjrxGroq/1gDodHfIhfV77
+A91a4le2JB+qHCZhWpRltBvxY7QlboFh53TgSoSb+7K6t4tFKWeUHtyWGMr3Qj1t
+Pc0hhx/pFhb5AsvWBVK4gy1Kp9SXLCQJS7q5NGdV5eQGN7FsAwQxKLM33k4t+oDV
+eHPju/WM41d80kuoM/XFDdI00/3IPqY6EGBSw/w1YglTbHiXxoH1LuCCSsbvTCbD
+UvLJKcMZ0iEB9IPX1X44i6aHhG4WFkeZzMJp4VJIZH9YbLceBund3HkwZSXoBlUd
+vI3a1XsmJkhW0KeyWyIPSJNAcfim0ze5/APbsc6EFX7IlUgDvkmjVP3RibQ2/AWi
+JB6SGfsXynHvmIDscjkkokHodBX5ZUmEdSCuZUALJoUd5x/bbJS7oLDJExa+QrLb
+/RPNyfZCzwgbG1uqr4o6svvNRYWtW2rHRlov6PumxVxQKz+10xxUz0VMwr0D1VSx
+LQgKqYAdO3htQj0mnCfcfujgQdWN/v9TszuVCpECH9gHIfiXqQ1ywXCOSLl+3a9/
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_hadoop26-alpine/docker-entrypoint.sh b/flink_hadoop26-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_hadoop26-alpine/docker-entrypoint.sh
+++ b/flink_hadoop26-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_hadoop26/KEYS b/flink_hadoop26/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_hadoop26/KEYS
+++ b/flink_hadoop26/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_hadoop26/docker-entrypoint.sh b/flink_hadoop26/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_hadoop26/docker-entrypoint.sh
+++ b/flink_hadoop26/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_hadoop27-alpine/KEYS b/flink_hadoop27-alpine/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_hadoop27-alpine/KEYS
+++ b/flink_hadoop27-alpine/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFxlfJMBEADTeynT8K8y7ed2vkpxE3fbjDcF7YCranB7C46o3v6N/S6oSdct
+RVD6DF8Q8eTH9GVSInBm2Robt3BS35hQoCbz+cdWgiBdPvHV58rJgJfFZfAfBexQ
++LOG/pR5iO3f7O4zYbCBjSdOj9vQRm3cccqJB6hwGvCKmEzBSf14d8Z87Gk/KQK8
+detj1op7tYiuRVBc5AHArHUdrc90Uu9ETMDH8nFllSlP5XhSR4qlWtegPoC3HMHK
+taIIJZ1Akt57030kAeH9dC4Bbj7SDOAoyPMxOmRABRWLub/LaNxtCr5P+Qhg6eyb
+j16XZkPYcjbsPGiJlGw8h0m3Vj8YJVYk8NwTyf8Opihdtz47ZDDbiUX5Cp3Vzk1d
+nNwDxQyF9rV+Gx+uBErh8V6GF4Lmuc4A8ofBt9yH1rb8KnPrKrmTa4kbKCeAwe6c
+s/aaTgtouzG8YVvo/XB3nSp/H/TKg5WcF2Je1SiYKWpNUJHBCbshljHL56ttjGgz
+kqK+VnWpCwminnPJPsMxZJj+lgYYnFOkEzyN+68eGwNJF99j86pluNSytJLETfzS
+TKsfhlzz8XlQmdbi19JpiNZL/pmna7Pb8orOWe2TSdV9F87lfMzsW8zd7Df8B/mO
+eZEgGbX33F9eMlW0VDhkIPXFI8U9GYwRZv1wp5bOAWmyn6GMWE+gc3cRAQARAQAB
+tC1qaW5jaGVuZyBTdW4gKGppbmNoZW5nKSA8amluY2hlbmdAYXBhY2hlLm9yZz6J
+Ak4EEwEIADgWIQSP6h7p0ASMDMxwt1cyEbBwO3nqDgUCXGV8kwIbAwULCQgHAgYV
+CgkICwIEFgIDAQIeAQIXgAAKCRAyEbBwO3nqDvtaEACdPuf0R3SL7Z1QgnD0ZR7y
+uHoyOlZsjLZHyZe18/6cDlgONL4ndGrYadIOx4g7MOhDkqH4cZn7MBE42iiI0fxZ
+1ZWazSSclGAnoQ9Ciiza9ZsVIlLY37H/Lw8VzjEMc4P7HniOteS54MyMKEBuSUyG
+I8EQUxdc/ioL0uTH0UE3HzJFiZRAU8KTs2f5dzNCGXMRs1jTFs94lcslM9xE7yZQ
+o1v4hi+YX5CwRBH0/xox6CDg3R4JPh/iiz45e3QueJYViuGcaGFzPEQAvkAGDZAl
+STnqgfTLqn4WD3CO/5ZFqMNMf8OKfBbQ7vopoWGUM9wI3U6yS1gGn/SQBS8zChdx
+Qy9s+xaEDOtJIKWym0WO5L71qDHITDvNw9fRgbdHIo2Ih4NHjO4FvFtu2nBk3qpv
+ZUYlKsn+o2dvggxgA9jtlVf3qVL9IxUd+O9KgAXRpcRS/WYOK1m8q5VWKBepfd72
+/376tDapjI8eqektL0Va9beJUXZ2uYIY1fOaXtqZZVQ/paAeN/+/4gwd2CrimiLn
+0zPtiLXQYaF7f1DE+TQbizwB05T/LCjdefFOPxNa6WF41Cttyy2Cbm+s6yXfC1Fk
+42OCKQxxR3mElEUeVes9NdcBNkLTYko9+FqNkX9T/Ub3NU7q7EeSxlGPnG3d5Oa9
+DpaG57j2VzcxDDpBwDN5H7kCDQRcZXyTARAAzqnDcN9ZB+m4zI8dfi5LIEzDvhCD
+u2UhJ4lNPVsCJAVDahPPtHC688ExHcNSXMhgbB/X4OtESC1ySkU3FCz2CBAiJMr2
+jY8RI2Kle+RkYOGPyNGhmzIETAo2opQVqOn4oHOX6FlNbeJf/viAbkhYKQxTeTBb
+QoacBs4xAyBZaCsfuHs73WBCjWK4THCCUU7Ww4pPwWBS9oQTN4iAilVdmKuT+AHj
+tAxQTiNWdMCMR4UcFIs1KDFe+91KfFbHz+q/0eyTzs6/AmkHZ4NlWoqBVYFjEybi
+2VtkepaKWTbjdccOoOS+SunDdFlIkxG97UckxhRC1KKIWF52lAO2qMR2YQck47FN
+8Fn/+WzybEmDZMPPkdSGDWNbcEE6hzEqkz6LKqWJx6WiQrAePljacwY2wU97ZbIs
+7QMFh1czeMQ4ZcoZdVwy300uL4zAb+3k0lVdNv3xMWTJnwBHsrw02QNHilF/7kc9
+g0qEAuCc9JTFwZN+L6TMtU2W1B13N1zS5yCLURZzQTcY7hdFNV0qYvGPYknQmDbD
+wkHVeFQPYcJw47tnijYhVjUA+Yh7d19m3bmfXCBUf6YWwy6rE40srT+cOZTHq9EQ
++oD1A19BrkAy1Vpoo/4f4s3RmvwYuPefjoA+dd3fy+2YF5K/J//hQG1rlgQhzBdP
+3AWsKwMPwf2xaKUAEQEAAYkCNgQYAQgAIBYhBI/qHunQBIwMzHC3VzIRsHA7eeoO
+BQJcZXyTAhsMAAoJEDIRsHA7eeoO72wP/0+u1SEVOO4Fxayli46LPDWD+aid7W8O
+oS7lq0oYQ9hY4fEtB8KPgI2VO5TsXwSN9Np5WttHntIZBf7F/701V2aysxEGsewd
+kakYrwA8JO/zuvSJF5fSanG+jBh9n/Q21aRVtduOkuNjrxGroq/1gDodHfIhfV77
+A91a4le2JB+qHCZhWpRltBvxY7QlboFh53TgSoSb+7K6t4tFKWeUHtyWGMr3Qj1t
+Pc0hhx/pFhb5AsvWBVK4gy1Kp9SXLCQJS7q5NGdV5eQGN7FsAwQxKLM33k4t+oDV
+eHPju/WM41d80kuoM/XFDdI00/3IPqY6EGBSw/w1YglTbHiXxoH1LuCCSsbvTCbD
+UvLJKcMZ0iEB9IPX1X44i6aHhG4WFkeZzMJp4VJIZH9YbLceBund3HkwZSXoBlUd
+vI3a1XsmJkhW0KeyWyIPSJNAcfim0ze5/APbsc6EFX7IlUgDvkmjVP3RibQ2/AWi
+JB6SGfsXynHvmIDscjkkokHodBX5ZUmEdSCuZUALJoUd5x/bbJS7oLDJExa+QrLb
+/RPNyfZCzwgbG1uqr4o6svvNRYWtW2rHRlov6PumxVxQKz+10xxUz0VMwr0D1VSx
+LQgKqYAdO3htQj0mnCfcfujgQdWN/v9TszuVCpECH9gHIfiXqQ1ywXCOSLl+3a9/
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_hadoop27-alpine/docker-entrypoint.sh b/flink_hadoop27-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_hadoop27-alpine/docker-entrypoint.sh
+++ b/flink_hadoop27-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_hadoop27/KEYS b/flink_hadoop27/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_hadoop27/KEYS
+++ b/flink_hadoop27/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_hadoop27/docker-entrypoint.sh b/flink_hadoop27/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_hadoop27/docker-entrypoint.sh
+++ b/flink_hadoop27/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_hadoop28-alpine/KEYS b/flink_hadoop28-alpine/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_hadoop28-alpine/KEYS
+++ b/flink_hadoop28-alpine/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_hadoop28-alpine/docker-entrypoint.sh b/flink_hadoop28-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_hadoop28-alpine/docker-entrypoint.sh
+++ b/flink_hadoop28-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_hadoop28/KEYS b/flink_hadoop28/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_hadoop28/KEYS
+++ b/flink_hadoop28/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_hadoop28/docker-entrypoint.sh b/flink_hadoop28/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_hadoop28/docker-entrypoint.sh
+++ b/flink_hadoop28/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_latest/KEYS b/flink_latest/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_latest/KEYS
+++ b/flink_latest/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFxlfJMBEADTeynT8K8y7ed2vkpxE3fbjDcF7YCranB7C46o3v6N/S6oSdct
+RVD6DF8Q8eTH9GVSInBm2Robt3BS35hQoCbz+cdWgiBdPvHV58rJgJfFZfAfBexQ
++LOG/pR5iO3f7O4zYbCBjSdOj9vQRm3cccqJB6hwGvCKmEzBSf14d8Z87Gk/KQK8
+detj1op7tYiuRVBc5AHArHUdrc90Uu9ETMDH8nFllSlP5XhSR4qlWtegPoC3HMHK
+taIIJZ1Akt57030kAeH9dC4Bbj7SDOAoyPMxOmRABRWLub/LaNxtCr5P+Qhg6eyb
+j16XZkPYcjbsPGiJlGw8h0m3Vj8YJVYk8NwTyf8Opihdtz47ZDDbiUX5Cp3Vzk1d
+nNwDxQyF9rV+Gx+uBErh8V6GF4Lmuc4A8ofBt9yH1rb8KnPrKrmTa4kbKCeAwe6c
+s/aaTgtouzG8YVvo/XB3nSp/H/TKg5WcF2Je1SiYKWpNUJHBCbshljHL56ttjGgz
+kqK+VnWpCwminnPJPsMxZJj+lgYYnFOkEzyN+68eGwNJF99j86pluNSytJLETfzS
+TKsfhlzz8XlQmdbi19JpiNZL/pmna7Pb8orOWe2TSdV9F87lfMzsW8zd7Df8B/mO
+eZEgGbX33F9eMlW0VDhkIPXFI8U9GYwRZv1wp5bOAWmyn6GMWE+gc3cRAQARAQAB
+tC1qaW5jaGVuZyBTdW4gKGppbmNoZW5nKSA8amluY2hlbmdAYXBhY2hlLm9yZz6J
+Ak4EEwEIADgWIQSP6h7p0ASMDMxwt1cyEbBwO3nqDgUCXGV8kwIbAwULCQgHAgYV
+CgkICwIEFgIDAQIeAQIXgAAKCRAyEbBwO3nqDvtaEACdPuf0R3SL7Z1QgnD0ZR7y
+uHoyOlZsjLZHyZe18/6cDlgONL4ndGrYadIOx4g7MOhDkqH4cZn7MBE42iiI0fxZ
+1ZWazSSclGAnoQ9Ciiza9ZsVIlLY37H/Lw8VzjEMc4P7HniOteS54MyMKEBuSUyG
+I8EQUxdc/ioL0uTH0UE3HzJFiZRAU8KTs2f5dzNCGXMRs1jTFs94lcslM9xE7yZQ
+o1v4hi+YX5CwRBH0/xox6CDg3R4JPh/iiz45e3QueJYViuGcaGFzPEQAvkAGDZAl
+STnqgfTLqn4WD3CO/5ZFqMNMf8OKfBbQ7vopoWGUM9wI3U6yS1gGn/SQBS8zChdx
+Qy9s+xaEDOtJIKWym0WO5L71qDHITDvNw9fRgbdHIo2Ih4NHjO4FvFtu2nBk3qpv
+ZUYlKsn+o2dvggxgA9jtlVf3qVL9IxUd+O9KgAXRpcRS/WYOK1m8q5VWKBepfd72
+/376tDapjI8eqektL0Va9beJUXZ2uYIY1fOaXtqZZVQ/paAeN/+/4gwd2CrimiLn
+0zPtiLXQYaF7f1DE+TQbizwB05T/LCjdefFOPxNa6WF41Cttyy2Cbm+s6yXfC1Fk
+42OCKQxxR3mElEUeVes9NdcBNkLTYko9+FqNkX9T/Ub3NU7q7EeSxlGPnG3d5Oa9
+DpaG57j2VzcxDDpBwDN5H7kCDQRcZXyTARAAzqnDcN9ZB+m4zI8dfi5LIEzDvhCD
+u2UhJ4lNPVsCJAVDahPPtHC688ExHcNSXMhgbB/X4OtESC1ySkU3FCz2CBAiJMr2
+jY8RI2Kle+RkYOGPyNGhmzIETAo2opQVqOn4oHOX6FlNbeJf/viAbkhYKQxTeTBb
+QoacBs4xAyBZaCsfuHs73WBCjWK4THCCUU7Ww4pPwWBS9oQTN4iAilVdmKuT+AHj
+tAxQTiNWdMCMR4UcFIs1KDFe+91KfFbHz+q/0eyTzs6/AmkHZ4NlWoqBVYFjEybi
+2VtkepaKWTbjdccOoOS+SunDdFlIkxG97UckxhRC1KKIWF52lAO2qMR2YQck47FN
+8Fn/+WzybEmDZMPPkdSGDWNbcEE6hzEqkz6LKqWJx6WiQrAePljacwY2wU97ZbIs
+7QMFh1czeMQ4ZcoZdVwy300uL4zAb+3k0lVdNv3xMWTJnwBHsrw02QNHilF/7kc9
+g0qEAuCc9JTFwZN+L6TMtU2W1B13N1zS5yCLURZzQTcY7hdFNV0qYvGPYknQmDbD
+wkHVeFQPYcJw47tnijYhVjUA+Yh7d19m3bmfXCBUf6YWwy6rE40srT+cOZTHq9EQ
++oD1A19BrkAy1Vpoo/4f4s3RmvwYuPefjoA+dd3fy+2YF5K/J//hQG1rlgQhzBdP
+3AWsKwMPwf2xaKUAEQEAAYkCNgQYAQgAIBYhBI/qHunQBIwMzHC3VzIRsHA7eeoO
+BQJcZXyTAhsMAAoJEDIRsHA7eeoO72wP/0+u1SEVOO4Fxayli46LPDWD+aid7W8O
+oS7lq0oYQ9hY4fEtB8KPgI2VO5TsXwSN9Np5WttHntIZBf7F/701V2aysxEGsewd
+kakYrwA8JO/zuvSJF5fSanG+jBh9n/Q21aRVtduOkuNjrxGroq/1gDodHfIhfV77
+A91a4le2JB+qHCZhWpRltBvxY7QlboFh53TgSoSb+7K6t4tFKWeUHtyWGMr3Qj1t
+Pc0hhx/pFhb5AsvWBVK4gy1Kp9SXLCQJS7q5NGdV5eQGN7FsAwQxKLM33k4t+oDV
+eHPju/WM41d80kuoM/XFDdI00/3IPqY6EGBSw/w1YglTbHiXxoH1LuCCSsbvTCbD
+UvLJKcMZ0iEB9IPX1X44i6aHhG4WFkeZzMJp4VJIZH9YbLceBund3HkwZSXoBlUd
+vI3a1XsmJkhW0KeyWyIPSJNAcfim0ze5/APbsc6EFX7IlUgDvkmjVP3RibQ2/AWi
+JB6SGfsXynHvmIDscjkkokHodBX5ZUmEdSCuZUALJoUd5x/bbJS7oLDJExa+QrLb
+/RPNyfZCzwgbG1uqr4o6svvNRYWtW2rHRlov6PumxVxQKz+10xxUz0VMwr0D1VSx
+LQgKqYAdO3htQj0mnCfcfujgQdWN/v9TszuVCpECH9gHIfiXqQ1ywXCOSLl+3a9/
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_latest/docker-entrypoint.sh b/flink_latest/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_latest/docker-entrypoint.sh
+++ b/flink_latest/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_scala_2.11-alpine/KEYS b/flink_scala_2.11-alpine/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_scala_2.11-alpine/KEYS
+++ b/flink_scala_2.11-alpine/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_scala_2.11-alpine/docker-entrypoint.sh b/flink_scala_2.11-alpine/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_scala_2.11-alpine/docker-entrypoint.sh
+++ b/flink_scala_2.11-alpine/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"
diff --git a/flink_scala_2.11/KEYS b/flink_scala_2.11/KEYS
index 715c2a0..6d2b0e7 100644
--- a/flink_scala_2.11/KEYS
+++ b/flink_scala_2.11/KEYS
@@ -1469,3 +1469,62 @@ IoB/BxKOM2jyLFd7vlt9mcfqiLTsGpT/y0EegdhZfsnpvJV8Lf3jSRpF10/yO8lm
 4lYEmheOUv73NdFk3csl78eVB97eRKVJJ7PTln+QCVc2f4brYmTeP+4381w=
 =B6VM
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-02-14 [SC]
+      8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E
+uid           [ultimate] jincheng Sun (jincheng) <jincheng@apache.org>
+sig 3        3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+sub   rsa4096 2019-02-14 [E]
+sig          3211B0703B79EA0E 2019-02-14  jincheng Sun (jincheng) <jincheng@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+ufWhGEtltlvN
+=qL+M
+-----END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/flink_scala_2.11/docker-entrypoint.sh b/flink_scala_2.11/docker-entrypoint.sh
index c690b89..c3c6875 100755
--- a/flink_scala_2.11/docker-entrypoint.sh
+++ b/flink_scala_2.11/docker-entrypoint.sh
@@ -20,6 +20,7 @@
 
 # If unspecified, the hostname of the container is taken as the JobManager address
 JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)}
+CONF_FILE="${FLINK_HOME}/conf/flink-conf.yaml"
 
 drop_privs_cmd() {
     if [ $(id -u) != 0 ]; then
@@ -40,23 +41,59 @@ if [ "$1" = "help" ]; then
 elif [ "$1" = "jobmanager" ]; then
     shift 1
     echo "Starting Job Manager"
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
 
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
     exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "$@"
 elif [ "$1" = "taskmanager" ]; then
+    shift 1
+    echo "Starting Task Manager"
+
     TASK_MANAGER_NUMBER_OF_TASK_SLOTS=${TASK_MANAGER_NUMBER_OF_TASK_SLOTS:-$(grep -c ^processor /proc/cpuinfo)}
 
-    sed -i -e "s/jobmanager.rpc.address: localhost/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    sed -i -e "s/taskmanager.numberOfTaskSlots: 1/taskmanager.numberOfTaskSlots: $TASK_MANAGER_NUMBER_OF_TASK_SLOTS/g" "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "blob.server.port: 6124" >> "$FLINK_HOME/conf/flink-conf.yaml"
-    echo "query.server.port: 6125" >> "$FLINK_HOME/conf/flink-conf.yaml"
+    if grep -E "^jobmanager\.rpc\.address:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/jobmanager\.rpc\.address:.*/jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}/g" "${CONF_FILE}"
+    else
+        echo "jobmanager.rpc.address: ${JOB_MANAGER_RPC_ADDRESS}" >> "${CONF_FILE}"
+    fi
 
-    echo "Starting Task Manager"
-    echo "config file: " && grep '^[^\n#]' "$FLINK_HOME/conf/flink-conf.yaml"
-    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground
+    if grep -E "^taskmanager\.numberOfTaskSlots:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/taskmanager\.numberOfTaskSlots:.*/taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}/g" "${CONF_FILE}"
+    else
+        echo "taskmanager.numberOfTaskSlots: ${TASK_MANAGER_NUMBER_OF_TASK_SLOTS}" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^blob\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/blob\.server\.port:.*/blob.server.port: 6124/g" "${CONF_FILE}"
+    else
+        echo "blob.server.port: 6124" >> "${CONF_FILE}"
+    fi
+
+    if grep -E "^query\.server\.port:.*" "${CONF_FILE}" > /dev/null; then
+        sed -i -e "s/query\.server\.port:.*/query.server.port: 6125/g" "${CONF_FILE}"
+    else
+        echo "query.server.port: 6125" >> "${CONF_FILE}"
+    fi
+
+    echo "config file: " && grep '^[^\n#]' "${CONF_FILE}"
+    exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "$@"
 fi
 
 exec "$@"

@tianon
Copy link
Member

tianon commented Mar 20, 2019

The diff is very unwieldy, but appears to mostly be providing more knobs? (especially $CONF_FILE for specifying a different configuration filename and using "$@" appropriately?)

Also a new key (8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E; I'd recommend giving our new https://github.com/docker-library/faq#openpgp--gnupg-keys-and-verification section a read for some ideas/info around improving how heinous those sorts of changes are to review, and how they make it hard to review other changes because they make up so much of the diff by raw line count).

@patricklucas
Copy link
Contributor Author

The diff is very unwieldy, but appears to mostly be providing more knobs? (especially $CONF_FILE for specifying a different configuration filename and using "$@" appropriately?)

Also a new key (8FEA1EE9D0048C0CCC70B7573211B0703B79EA0E; I'd recommend giving our new https://github.com/docker-library/faq#openpgp--gnupg-keys-and-verification section a read for some ideas/info around improving how heinous those sorts of changes are to review, and how they make it hard to review other changes because they make up so much of the diff by raw line count).

I wouldn't call it just changing knobs.

Regarding keys, I'll take a look—I explained the situation a bit and asked you for advice in a PR back in January: #5243 (comment)

Quoting that comment:

The tricky bit is that the signer can differ between each release, depending on who the release manager was. Since downloading the KEYS file from the same place as the release on each build seems to somewhat defeat the purpose of verifying signatures, I think we'd have to maintain a flink-version-to-key-id mapping and fetch the appropriate key during the build, which would be more effort than just keeping a copy of the KEYS file in the repo itself.

Definitely open to suggestions, though. :)

@tianon
Copy link
Member

tianon commented Mar 22, 2019

I think we'd have to maintain a flink-version-to-key-id mapping and fetch the appropriate key during the build

One approach we've taken/seen for other Apache projects is to extract the list of relevant fingerprints and simply maintain that (fetching each one during build).


LGTM

Build test of #5576; 53f3b1c; amd64 (flink):

$ bashbrew build flink:1.6.4-hadoop24-scala_2.11
Building bashbrew/cache:860396e94706db84c4b9e736777d29b6f2cc5b285ec9a5f709d81e72043afa23 (flink:1.6.4-hadoop24-scala_2.11)
Tagging flink:1.6.4-hadoop24-scala_2.11
Tagging flink:1.6.4-hadoop24
Tagging flink:1.6-hadoop24

$ test/run.sh flink:1.6.4-hadoop24-scala_2.11
testing flink:1.6.4-hadoop24-scala_2.11
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.6.4-hadoop26-scala_2.11
Building bashbrew/cache:6602b6baec4e2c189a4b6f9b60591ddbe0be1cdafb33a5db650cb9f8b9816f0d (flink:1.6.4-hadoop26-scala_2.11)
Tagging flink:1.6.4-hadoop26-scala_2.11
Tagging flink:1.6.4-hadoop26
Tagging flink:1.6-hadoop26

$ test/run.sh flink:1.6.4-hadoop26-scala_2.11
testing flink:1.6.4-hadoop26-scala_2.11
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.6.4-hadoop27-scala_2.11
Building bashbrew/cache:bb1c527e0a9e4bcff744dd30b19805eb00541602111c45013be6b0dee5c4bbcd (flink:1.6.4-hadoop27-scala_2.11)
Tagging flink:1.6.4-hadoop27-scala_2.11
Tagging flink:1.6.4-hadoop27
Tagging flink:1.6-hadoop27

$ test/run.sh flink:1.6.4-hadoop27-scala_2.11
testing flink:1.6.4-hadoop27-scala_2.11
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.6.4-hadoop28-scala_2.11
Building bashbrew/cache:476286ec3867476e772e0db9c91d39ba776a33b3de3989c8f566d04c3ffc3404 (flink:1.6.4-hadoop28-scala_2.11)
Tagging flink:1.6.4-hadoop28-scala_2.11
Tagging flink:1.6.4-hadoop28
Tagging flink:1.6-hadoop28

$ test/run.sh flink:1.6.4-hadoop28-scala_2.11
testing flink:1.6.4-hadoop28-scala_2.11
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.6.4-scala_2.11
Building bashbrew/cache:ea4c5bec409448e6cae8176f5bde88b11105989bfc08b5018c879a1777e9b1b5 (flink:1.6.4-scala_2.11)
Tagging flink:1.6.4-scala_2.11
Tagging flink:1.6-scala_2.11
Tagging flink:1.6.4
Tagging flink:1.6

$ test/run.sh flink:1.6.4-scala_2.11
testing flink:1.6.4-scala_2.11
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.6.4-hadoop24-scala_2.11-alpine
Building bashbrew/cache:07077603de9539fc5abca8e23de944b54a2d7727b1abc17c79d3e55947161524 (flink:1.6.4-hadoop24-scala_2.11-alpine)
Tagging flink:1.6.4-hadoop24-scala_2.11-alpine
Tagging flink:1.6.4-hadoop24-alpine
Tagging flink:1.6-hadoop24-alpine

$ test/run.sh flink:1.6.4-hadoop24-scala_2.11-alpine
testing flink:1.6.4-hadoop24-scala_2.11-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.6.4-hadoop26-scala_2.11-alpine
Building bashbrew/cache:809d3996fb54c7c25f1d14eec6f09d974a9f15c641385fb0ffcf4fb7b200ef95 (flink:1.6.4-hadoop26-scala_2.11-alpine)
Tagging flink:1.6.4-hadoop26-scala_2.11-alpine
Tagging flink:1.6.4-hadoop26-alpine
Tagging flink:1.6-hadoop26-alpine

$ test/run.sh flink:1.6.4-hadoop26-scala_2.11-alpine
testing flink:1.6.4-hadoop26-scala_2.11-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.6.4-hadoop27-scala_2.11-alpine
Building bashbrew/cache:50fe0bf52331dddbe50f9475aed2311e6859e99984dea4b776cf66b09bf8597b (flink:1.6.4-hadoop27-scala_2.11-alpine)
Tagging flink:1.6.4-hadoop27-scala_2.11-alpine
Tagging flink:1.6.4-hadoop27-alpine
Tagging flink:1.6-hadoop27-alpine

$ test/run.sh flink:1.6.4-hadoop27-scala_2.11-alpine
testing flink:1.6.4-hadoop27-scala_2.11-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.6.4-hadoop28-scala_2.11-alpine
Building bashbrew/cache:cba97233d3abe1c259a08c27a29036e3a26fb889bc9debf05228780480a81621 (flink:1.6.4-hadoop28-scala_2.11-alpine)
Tagging flink:1.6.4-hadoop28-scala_2.11-alpine
Tagging flink:1.6.4-hadoop28-alpine
Tagging flink:1.6-hadoop28-alpine

$ test/run.sh flink:1.6.4-hadoop28-scala_2.11-alpine
testing flink:1.6.4-hadoop28-scala_2.11-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.6.4-scala_2.11-alpine
Building bashbrew/cache:a3064a1bad69729ace1f3a3bd14eaeba73d9182f31f4c49809b7cd1db21fe0ac (flink:1.6.4-scala_2.11-alpine)
Tagging flink:1.6.4-scala_2.11-alpine
Tagging flink:1.6-scala_2.11-alpine
Tagging flink:1.6.4-alpine
Tagging flink:1.6-alpine

$ test/run.sh flink:1.6.4-scala_2.11-alpine
testing flink:1.6.4-scala_2.11-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop24-scala_2.11
Building bashbrew/cache:22c5b85c0481d17cb5287ca7704d4e6310ac412dfe409b7c209040e209f5aab4 (flink:1.7.2-hadoop24-scala_2.11)
Tagging flink:1.7.2-hadoop24-scala_2.11

$ test/run.sh flink:1.7.2-hadoop24-scala_2.11
testing flink:1.7.2-hadoop24-scala_2.11
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop24-scala_2.12
Building bashbrew/cache:44e87e70649dd108004c6a6554ac6c27fc9afc0354349b06774c0a03bc2075b6 (flink:1.7.2-hadoop24-scala_2.12)
Tagging flink:1.7.2-hadoop24-scala_2.12
Tagging flink:1.7.2-hadoop24
Tagging flink:1.7-hadoop24
Tagging flink:hadoop24

$ test/run.sh flink:1.7.2-hadoop24-scala_2.12
testing flink:1.7.2-hadoop24-scala_2.12
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop26-scala_2.11
Building bashbrew/cache:da3d42a19c46b2c1a193ecb79817a5580da17ab8de397fb8a8379decb0228adb (flink:1.7.2-hadoop26-scala_2.11)
Tagging flink:1.7.2-hadoop26-scala_2.11

$ test/run.sh flink:1.7.2-hadoop26-scala_2.11
testing flink:1.7.2-hadoop26-scala_2.11
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop26-scala_2.12
Building bashbrew/cache:2146dc004efad5a306d46882ff3a7814391c2b2315eb9748acebef73a39d5b97 (flink:1.7.2-hadoop26-scala_2.12)
Tagging flink:1.7.2-hadoop26-scala_2.12
Tagging flink:1.7.2-hadoop26
Tagging flink:1.7-hadoop26
Tagging flink:hadoop26

$ test/run.sh flink:1.7.2-hadoop26-scala_2.12
testing flink:1.7.2-hadoop26-scala_2.12
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop27-scala_2.11
Building bashbrew/cache:5ee780f92a9d2c7452a43b449cf8dd2aeb7108a4f28f8f9c70c21c4ca5ec5586 (flink:1.7.2-hadoop27-scala_2.11)
Tagging flink:1.7.2-hadoop27-scala_2.11

$ test/run.sh flink:1.7.2-hadoop27-scala_2.11
testing flink:1.7.2-hadoop27-scala_2.11
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop27-scala_2.12
Building bashbrew/cache:4daa8e1dc3600d294a695961221c458338fa55fe03ef12c73eff13469056570f (flink:1.7.2-hadoop27-scala_2.12)
Tagging flink:1.7.2-hadoop27-scala_2.12
Tagging flink:1.7.2-hadoop27
Tagging flink:1.7-hadoop27
Tagging flink:hadoop27

$ test/run.sh flink:1.7.2-hadoop27-scala_2.12
testing flink:1.7.2-hadoop27-scala_2.12
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop28-scala_2.11
Building bashbrew/cache:1a5da9e06e8d93c603cd8a1c4eb6d01ceedbeaceea87cf0667aefa0a0889e585 (flink:1.7.2-hadoop28-scala_2.11)
Tagging flink:1.7.2-hadoop28-scala_2.11

$ test/run.sh flink:1.7.2-hadoop28-scala_2.11
testing flink:1.7.2-hadoop28-scala_2.11
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop28-scala_2.12
Building bashbrew/cache:d2988ec6ee5534a64bd6501f5697e39005b440b0af5368403e9bd49fd25f69d1 (flink:1.7.2-hadoop28-scala_2.12)
Tagging flink:1.7.2-hadoop28-scala_2.12
Tagging flink:1.7.2-hadoop28
Tagging flink:1.7-hadoop28
Tagging flink:hadoop28

$ test/run.sh flink:1.7.2-hadoop28-scala_2.12
testing flink:1.7.2-hadoop28-scala_2.12
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-scala_2.11
Building bashbrew/cache:ec6cab40372e1868f5892e4024a8b0cd9b6d8bd9b252fd27e1fbd37f01954966 (flink:1.7.2-scala_2.11)
Tagging flink:1.7.2-scala_2.11
Tagging flink:1.7-scala_2.11
Tagging flink:scala_2.11

$ test/run.sh flink:1.7.2-scala_2.11
testing flink:1.7.2-scala_2.11
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-scala_2.12
Building bashbrew/cache:ea16315cd15f6e48a966805d2bfe81d9fd98c2dacff714873f7bd1d42f224417 (flink:1.7.2-scala_2.12)
Tagging flink:1.7.2-scala_2.12
Tagging flink:1.7-scala_2.12
Tagging flink:scala_2.12
Tagging flink:1.7.2
Tagging flink:1.7
Tagging flink:latest

$ test/run.sh flink:1.7.2-scala_2.12
testing flink:1.7.2-scala_2.12
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop24-scala_2.11-alpine
Building bashbrew/cache:180444af4e31737815f74cd66cf6d82ed95748e5046a3396c4ca7461b2b08f14 (flink:1.7.2-hadoop24-scala_2.11-alpine)
Tagging flink:1.7.2-hadoop24-scala_2.11-alpine

$ test/run.sh flink:1.7.2-hadoop24-scala_2.11-alpine
testing flink:1.7.2-hadoop24-scala_2.11-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop24-scala_2.12-alpine
Building bashbrew/cache:9d2565e503c5f77efa12a29d129d5c9fe525954dad61c08d3232311c617b2b38 (flink:1.7.2-hadoop24-scala_2.12-alpine)
Tagging flink:1.7.2-hadoop24-scala_2.12-alpine
Tagging flink:1.7.2-hadoop24-alpine
Tagging flink:1.7-hadoop24-alpine
Tagging flink:hadoop24-alpine

$ test/run.sh flink:1.7.2-hadoop24-scala_2.12-alpine
testing flink:1.7.2-hadoop24-scala_2.12-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop26-scala_2.11-alpine
Building bashbrew/cache:f9ce644181feb8763a058f9de2f3c26bcbcb220d86805b3ef335140f51860f11 (flink:1.7.2-hadoop26-scala_2.11-alpine)
Tagging flink:1.7.2-hadoop26-scala_2.11-alpine

$ test/run.sh flink:1.7.2-hadoop26-scala_2.11-alpine
testing flink:1.7.2-hadoop26-scala_2.11-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop26-scala_2.12-alpine
Building bashbrew/cache:fd5374e9ebfe39d20eb98c8843d46ecb65015a646c0f316a20372735673eeaf5 (flink:1.7.2-hadoop26-scala_2.12-alpine)
Tagging flink:1.7.2-hadoop26-scala_2.12-alpine
Tagging flink:1.7.2-hadoop26-alpine
Tagging flink:1.7-hadoop26-alpine
Tagging flink:hadoop26-alpine

$ test/run.sh flink:1.7.2-hadoop26-scala_2.12-alpine
testing flink:1.7.2-hadoop26-scala_2.12-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop27-scala_2.11-alpine
Building bashbrew/cache:1c74ffcbb2d9b53e5ed7a0d378ccc7fb5c0edb4c1ecb236c5e398e2313ba377a (flink:1.7.2-hadoop27-scala_2.11-alpine)
Tagging flink:1.7.2-hadoop27-scala_2.11-alpine

$ test/run.sh flink:1.7.2-hadoop27-scala_2.11-alpine
testing flink:1.7.2-hadoop27-scala_2.11-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop27-scala_2.12-alpine
Building bashbrew/cache:140e29e4ff0c980f47efa79165f5f5ea99eb8d38ba057ff7c5c7d9b3ae1a1436 (flink:1.7.2-hadoop27-scala_2.12-alpine)
Tagging flink:1.7.2-hadoop27-scala_2.12-alpine
Tagging flink:1.7.2-hadoop27-alpine
Tagging flink:1.7-hadoop27-alpine
Tagging flink:hadoop27-alpine

$ test/run.sh flink:1.7.2-hadoop27-scala_2.12-alpine
testing flink:1.7.2-hadoop27-scala_2.12-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop28-scala_2.11-alpine
Building bashbrew/cache:bf2a87c2df7ed240d014b9458879a47281bbf2b9e08b1f892587d4f59f4651bd (flink:1.7.2-hadoop28-scala_2.11-alpine)
Tagging flink:1.7.2-hadoop28-scala_2.11-alpine

$ test/run.sh flink:1.7.2-hadoop28-scala_2.11-alpine
testing flink:1.7.2-hadoop28-scala_2.11-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-hadoop28-scala_2.12-alpine
Building bashbrew/cache:cb8bba1ad835a982978be039be1c9ac7316f37e86909b32978a0e1337584f6e5 (flink:1.7.2-hadoop28-scala_2.12-alpine)
Tagging flink:1.7.2-hadoop28-scala_2.12-alpine
Tagging flink:1.7.2-hadoop28-alpine
Tagging flink:1.7-hadoop28-alpine
Tagging flink:hadoop28-alpine

$ test/run.sh flink:1.7.2-hadoop28-scala_2.12-alpine
testing flink:1.7.2-hadoop28-scala_2.12-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-scala_2.11-alpine
Building bashbrew/cache:00458df7d5f192f94511c29d86eca69a7439c9156050276aef7abf3fdace8ce1 (flink:1.7.2-scala_2.11-alpine)
Tagging flink:1.7.2-scala_2.11-alpine
Tagging flink:1.7-scala_2.11-alpine
Tagging flink:scala_2.11-alpine

$ test/run.sh flink:1.7.2-scala_2.11-alpine
testing flink:1.7.2-scala_2.11-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build flink:1.7.2-scala_2.12-alpine
Building bashbrew/cache:b25340840de0841816b7d9f61721713f60b2c1bf06a3602bf3c3b3cbcbe0be09 (flink:1.7.2-scala_2.12-alpine)
Tagging flink:1.7.2-scala_2.12-alpine
Tagging flink:1.7-scala_2.12-alpine
Tagging flink:scala_2.12-alpine
Tagging flink:1.7.2-alpine
Tagging flink:1.7-alpine
Tagging flink:alpine

$ test/run.sh flink:1.7.2-scala_2.12-alpine
testing flink:1.7.2-scala_2.12-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed

@tianon tianon merged commit cb7ce91 into docker-library:master Mar 22, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants