diff --git a/.github/workflows/docker_push.yml b/.github/workflows/docker_push.yml index cd8b442..1eb8d8a 100644 --- a/.github/workflows/docker_push.yml +++ b/.github/workflows/docker_push.yml @@ -53,16 +53,6 @@ jobs: - flink_version: "1.20" java_version: "17" dockerfile: "1.20/scala_2.12-java17-ubuntu/Dockerfile" - # Flink 2.0.x - - flink_version: "2.0" - java_version: "11" - dockerfile: "2.0/scala_2.12-java11-ubuntu/Dockerfile" - - flink_version: "2.0" - java_version: "17" - dockerfile: "2.0/scala_2.12-java17-ubuntu/Dockerfile" - - flink_version: "2.0" - java_version: "21" - dockerfile: "2.0/scala_2.12-java21-ubuntu/Dockerfile" # Flink 2.1.x - flink_version: "2.1" java_version: "11" @@ -73,7 +63,7 @@ jobs: - flink_version: "2.1" java_version: "21" dockerfile: "2.1/scala_2.12-java21-ubuntu/Dockerfile" - # Flink 2.2.x (Latest) + # Flink 2.2.x - flink_version: "2.2" java_version: "11" dockerfile: "2.2/scala_2.12-java11-ubuntu/Dockerfile" @@ -83,6 +73,16 @@ jobs: - flink_version: "2.2" java_version: "21" dockerfile: "2.2/scala_2.12-java21-ubuntu/Dockerfile" + # Flink 2.3.x (Latest) + - flink_version: "2.3" + java_version: "11" + dockerfile: "2.3/scala_2.12-java11-ubuntu/Dockerfile" + - flink_version: "2.3" + java_version: "17" + dockerfile: "2.3/scala_2.12-java17-ubuntu/Dockerfile" + - flink_version: "2.3" + java_version: "21" + dockerfile: "2.3/scala_2.12-java21-ubuntu/Dockerfile" steps: - name: Check out the repo diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index af10c8b..02e188a 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -37,14 +37,14 @@ jobs: max-parallel: 1 matrix: java_version: [8, 11, 17, 21] - flink_version: [ 2.2-SNAPSHOT, 2.1-SNAPSHOT, 2.0-SNAPSHOT, 1.20-SNAPSHOT ] + flink_version: [ 2.3-SNAPSHOT, 2.2-SNAPSHOT, 2.1-SNAPSHOT, 1.20-SNAPSHOT ] include: - - flink_version: 2.2-SNAPSHOT + - flink_version: 2.3-SNAPSHOT branch: dev-master + - flink_version: 2.2-SNAPSHOT + branch: dev-2.2 - flink_version: 2.1-SNAPSHOT branch: dev-2.1 - - flink_version: 2.0-SNAPSHOT - branch: dev-2.0 - flink_version: 1.20-SNAPSHOT branch: dev-1.20 steps: diff --git a/2.0/scala_2.12-java11-ubuntu/release.metadata b/2.0/scala_2.12-java11-ubuntu/release.metadata deleted file mode 100644 index 700b30f..0000000 --- a/2.0/scala_2.12-java11-ubuntu/release.metadata +++ /dev/null @@ -1,2 +0,0 @@ -Tags: 2.0.2-scala_2.12-java11, 2.0-scala_2.12-java11, scala_2.12-java11, 2.0.2-java11, 2.0-java11, java11 -Architectures: amd64,arm64v8 diff --git a/2.0/scala_2.12-java17-ubuntu/release.metadata b/2.0/scala_2.12-java17-ubuntu/release.metadata deleted file mode 100644 index d5cbdf9..0000000 --- a/2.0/scala_2.12-java17-ubuntu/release.metadata +++ /dev/null @@ -1,2 +0,0 @@ -Tags: 2.0.2-scala_2.12-java17, 2.0-scala_2.12-java17, scala_2.12-java17, 2.0.2-scala_2.12, 2.0-scala_2.12, scala_2.12, 2.0.2-java17, 2.0-java17, java17, 2.0.2, 2.0, latest -Architectures: amd64,arm64v8 diff --git a/2.0/scala_2.12-java21-ubuntu/release.metadata b/2.0/scala_2.12-java21-ubuntu/release.metadata deleted file mode 100644 index 514e4bd..0000000 --- a/2.0/scala_2.12-java21-ubuntu/release.metadata +++ /dev/null @@ -1,2 +0,0 @@ -Tags: 2.0.2-scala_2.12-java21, 2.0-scala_2.12-java21, scala_2.12-java21, 2.0.2-java21, 2.0-java21, java21 -Architectures: amd64,arm64v8 diff --git a/2.0/scala_2.12-java11-ubuntu/Dockerfile b/2.3/scala_2.12-java11-ubuntu/Dockerfile similarity index 69% rename from 2.0/scala_2.12-java11-ubuntu/Dockerfile rename to 2.3/scala_2.12-java11-ubuntu/Dockerfile index fe64e61..88155ee 100644 --- a/2.0/scala_2.12-java11-ubuntu/Dockerfile +++ b/2.3/scala_2.12-java11-ubuntu/Dockerfile @@ -16,7 +16,7 @@ # limitations under the License. ############################################################################### -FROM eclipse-temurin:11-jre-jammy +FROM eclipse-temurin:11-jre-noble # Install dependencies RUN set -ex; \ @@ -24,28 +24,10 @@ RUN set -ex; \ apt-get -y install gpg libsnappy1v5 gettext-base libjemalloc-dev; \ rm -rf /var/lib/apt/lists/* -# Grab gosu for easy step-down from root -ENV GOSU_VERSION 1.11 -RUN set -ex; \ - wget -nv -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)"; \ - wget -nv -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc"; \ - export GNUPGHOME="$(mktemp -d)"; \ - for server in hkps://keys.openpgp.org $(shuf -e \ - keyserver.ubuntu.com \ - hkp://keyserver.ubuntu.com:80 \ - pgp.mit.edu) ; do \ - gpg --batch --keyserver "$server" --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && break || : ; \ - done && \ - gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ - gpgconf --kill all; \ - rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \ - chmod +x /usr/local/bin/gosu; \ - gosu nobody true - # Configure Flink version -ENV FLINK_TGZ_URL=https://dlcdn.apache.org/flink/flink-2.0.2/flink-2.0.2-bin-scala_2.12.tgz \ - FLINK_ASC_URL=https://downloads.apache.org/flink/flink-2.0.2/flink-2.0.2-bin-scala_2.12.tgz.asc \ - GPG_KEY=F7529FAE24811A5C0DF3CA741596BBF0726835D8 \ +ENV FLINK_TGZ_URL=https://dlcdn.apache.org/flink/flink-2.3.0/flink-2.3.0-bin-scala_2.12.tgz \ + FLINK_ASC_URL=https://downloads.apache.org/flink/flink-2.3.0/flink-2.3.0-bin-scala_2.12.tgz.asc \ + GPG_KEY=E11F792053638C56C98ACFADB5B638DCA5F94E4A \ CHECK_GPG=true # Prepare environment @@ -88,6 +70,7 @@ RUN set -ex; \ "-rmKV" "taskmanager.host=localhost"; # Configure container +USER flink COPY docker-entrypoint.sh / ENTRYPOINT ["/docker-entrypoint.sh"] EXPOSE 6123 8081 diff --git a/2.0/scala_2.12-java21-ubuntu/docker-entrypoint.sh b/2.3/scala_2.12-java11-ubuntu/docker-entrypoint.sh similarity index 89% rename from 2.0/scala_2.12-java21-ubuntu/docker-entrypoint.sh rename to 2.3/scala_2.12-java11-ubuntu/docker-entrypoint.sh index e081109..cf63daa 100755 --- a/2.0/scala_2.12-java21-ubuntu/docker-entrypoint.sh +++ b/2.3/scala_2.12-java11-ubuntu/docker-entrypoint.sh @@ -25,16 +25,9 @@ COMMAND_HISTORY_SERVER="history-server" JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)} CONF_FILE_DIR="${FLINK_HOME}/conf" -drop_privs_cmd() { - if [ $(id -u) != 0 ]; then - # Don't need to drop privs if EUID != 0 - return - elif [ -x /sbin/su-exec ]; then - # Alpine - echo su-exec flink - else - # Others - echo gosu flink +check_priv_user() { + if [ $(id -u) == 0 ]; then + echo "WARNING: Running as root user is not recommended. Please use a non-root user to run Flink." fi } @@ -146,6 +139,8 @@ maybe_enable_jemalloc() { fi } +check_priv_user + maybe_enable_jemalloc copy_plugins_if_required @@ -163,28 +158,28 @@ elif [ "$1" = "jobmanager" ]; then echo "Starting Job Manager" - exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "${args[@]}" + exec "$FLINK_HOME/bin/jobmanager.sh" start-foreground "${args[@]}" elif [ "$1" = ${COMMAND_STANDALONE} ]; then args=("${args[@]:1}") echo "Starting Job Manager" - exec $(drop_privs_cmd) "$FLINK_HOME/bin/standalone-job.sh" start-foreground "${args[@]}" + exec "$FLINK_HOME/bin/standalone-job.sh" start-foreground "${args[@]}" elif [ "$1" = ${COMMAND_HISTORY_SERVER} ]; then args=("${args[@]:1}") echo "Starting History Server" - exec $(drop_privs_cmd) "$FLINK_HOME/bin/historyserver.sh" start-foreground "${args[@]}" + exec "$FLINK_HOME/bin/historyserver.sh" start-foreground "${args[@]}" elif [ "$1" = "taskmanager" ]; then args=("${args[@]:1}") echo "Starting Task Manager" - exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "${args[@]}" + exec "$FLINK_HOME/bin/taskmanager.sh" start-foreground "${args[@]}" fi args=("${args[@]}") # Running command in pass-through mode -exec $(drop_privs_cmd) "${args[@]}" +exec "${args[@]}" diff --git a/2.3/scala_2.12-java11-ubuntu/release.metadata b/2.3/scala_2.12-java11-ubuntu/release.metadata new file mode 100644 index 0000000..471ee8d --- /dev/null +++ b/2.3/scala_2.12-java11-ubuntu/release.metadata @@ -0,0 +1,2 @@ +Tags: 2.3.0-scala_2.12-java11, 2.3-scala_2.12-java11, scala_2.12-java11, 2.3.0-java11, 2.3-java11, java11 +Architectures: amd64,arm64v8 diff --git a/2.0/scala_2.12-java21-ubuntu/Dockerfile b/2.3/scala_2.12-java17-ubuntu/Dockerfile similarity index 69% rename from 2.0/scala_2.12-java21-ubuntu/Dockerfile rename to 2.3/scala_2.12-java17-ubuntu/Dockerfile index 51e79ad..b7df210 100644 --- a/2.0/scala_2.12-java21-ubuntu/Dockerfile +++ b/2.3/scala_2.12-java17-ubuntu/Dockerfile @@ -16,7 +16,7 @@ # limitations under the License. ############################################################################### -FROM eclipse-temurin:21-jre-jammy +FROM eclipse-temurin:17-jre-noble # Install dependencies RUN set -ex; \ @@ -24,28 +24,10 @@ RUN set -ex; \ apt-get -y install gpg libsnappy1v5 gettext-base libjemalloc-dev; \ rm -rf /var/lib/apt/lists/* -# Grab gosu for easy step-down from root -ENV GOSU_VERSION 1.11 -RUN set -ex; \ - wget -nv -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)"; \ - wget -nv -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc"; \ - export GNUPGHOME="$(mktemp -d)"; \ - for server in hkps://keys.openpgp.org $(shuf -e \ - keyserver.ubuntu.com \ - hkp://keyserver.ubuntu.com:80 \ - pgp.mit.edu) ; do \ - gpg --batch --keyserver "$server" --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && break || : ; \ - done && \ - gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ - gpgconf --kill all; \ - rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \ - chmod +x /usr/local/bin/gosu; \ - gosu nobody true - # Configure Flink version -ENV FLINK_TGZ_URL=https://dlcdn.apache.org/flink/flink-2.0.2/flink-2.0.2-bin-scala_2.12.tgz \ - FLINK_ASC_URL=https://downloads.apache.org/flink/flink-2.0.2/flink-2.0.2-bin-scala_2.12.tgz.asc \ - GPG_KEY=F7529FAE24811A5C0DF3CA741596BBF0726835D8 \ +ENV FLINK_TGZ_URL=https://dlcdn.apache.org/flink/flink-2.3.0/flink-2.3.0-bin-scala_2.12.tgz \ + FLINK_ASC_URL=https://downloads.apache.org/flink/flink-2.3.0/flink-2.3.0-bin-scala_2.12.tgz.asc \ + GPG_KEY=E11F792053638C56C98ACFADB5B638DCA5F94E4A \ CHECK_GPG=true # Prepare environment @@ -88,6 +70,7 @@ RUN set -ex; \ "-rmKV" "taskmanager.host=localhost"; # Configure container +USER flink COPY docker-entrypoint.sh / ENTRYPOINT ["/docker-entrypoint.sh"] EXPOSE 6123 8081 diff --git a/2.0/scala_2.12-java11-ubuntu/docker-entrypoint.sh b/2.3/scala_2.12-java17-ubuntu/docker-entrypoint.sh similarity index 89% rename from 2.0/scala_2.12-java11-ubuntu/docker-entrypoint.sh rename to 2.3/scala_2.12-java17-ubuntu/docker-entrypoint.sh index e081109..cf63daa 100755 --- a/2.0/scala_2.12-java11-ubuntu/docker-entrypoint.sh +++ b/2.3/scala_2.12-java17-ubuntu/docker-entrypoint.sh @@ -25,16 +25,9 @@ COMMAND_HISTORY_SERVER="history-server" JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)} CONF_FILE_DIR="${FLINK_HOME}/conf" -drop_privs_cmd() { - if [ $(id -u) != 0 ]; then - # Don't need to drop privs if EUID != 0 - return - elif [ -x /sbin/su-exec ]; then - # Alpine - echo su-exec flink - else - # Others - echo gosu flink +check_priv_user() { + if [ $(id -u) == 0 ]; then + echo "WARNING: Running as root user is not recommended. Please use a non-root user to run Flink." fi } @@ -146,6 +139,8 @@ maybe_enable_jemalloc() { fi } +check_priv_user + maybe_enable_jemalloc copy_plugins_if_required @@ -163,28 +158,28 @@ elif [ "$1" = "jobmanager" ]; then echo "Starting Job Manager" - exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "${args[@]}" + exec "$FLINK_HOME/bin/jobmanager.sh" start-foreground "${args[@]}" elif [ "$1" = ${COMMAND_STANDALONE} ]; then args=("${args[@]:1}") echo "Starting Job Manager" - exec $(drop_privs_cmd) "$FLINK_HOME/bin/standalone-job.sh" start-foreground "${args[@]}" + exec "$FLINK_HOME/bin/standalone-job.sh" start-foreground "${args[@]}" elif [ "$1" = ${COMMAND_HISTORY_SERVER} ]; then args=("${args[@]:1}") echo "Starting History Server" - exec $(drop_privs_cmd) "$FLINK_HOME/bin/historyserver.sh" start-foreground "${args[@]}" + exec "$FLINK_HOME/bin/historyserver.sh" start-foreground "${args[@]}" elif [ "$1" = "taskmanager" ]; then args=("${args[@]:1}") echo "Starting Task Manager" - exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "${args[@]}" + exec "$FLINK_HOME/bin/taskmanager.sh" start-foreground "${args[@]}" fi args=("${args[@]}") # Running command in pass-through mode -exec $(drop_privs_cmd) "${args[@]}" +exec "${args[@]}" diff --git a/2.3/scala_2.12-java17-ubuntu/release.metadata b/2.3/scala_2.12-java17-ubuntu/release.metadata new file mode 100644 index 0000000..3c171ba --- /dev/null +++ b/2.3/scala_2.12-java17-ubuntu/release.metadata @@ -0,0 +1,2 @@ +Tags: 2.3.0-scala_2.12-java17, 2.3-scala_2.12-java17, scala_2.12-java17, 2.3.0-scala_2.12, 2.3-scala_2.12, scala_2.12, 2.3.0-java17, 2.3-java17, java17, 2.3.0, 2.3, latest +Architectures: amd64,arm64v8 diff --git a/2.0/scala_2.12-java17-ubuntu/Dockerfile b/2.3/scala_2.12-java21-ubuntu/Dockerfile similarity index 69% rename from 2.0/scala_2.12-java17-ubuntu/Dockerfile rename to 2.3/scala_2.12-java21-ubuntu/Dockerfile index 32bd6c9..8c51845 100644 --- a/2.0/scala_2.12-java17-ubuntu/Dockerfile +++ b/2.3/scala_2.12-java21-ubuntu/Dockerfile @@ -16,7 +16,7 @@ # limitations under the License. ############################################################################### -FROM eclipse-temurin:17-jre-jammy +FROM eclipse-temurin:21-jre-noble # Install dependencies RUN set -ex; \ @@ -24,28 +24,10 @@ RUN set -ex; \ apt-get -y install gpg libsnappy1v5 gettext-base libjemalloc-dev; \ rm -rf /var/lib/apt/lists/* -# Grab gosu for easy step-down from root -ENV GOSU_VERSION 1.11 -RUN set -ex; \ - wget -nv -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)"; \ - wget -nv -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc"; \ - export GNUPGHOME="$(mktemp -d)"; \ - for server in hkps://keys.openpgp.org $(shuf -e \ - keyserver.ubuntu.com \ - hkp://keyserver.ubuntu.com:80 \ - pgp.mit.edu) ; do \ - gpg --batch --keyserver "$server" --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && break || : ; \ - done && \ - gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ - gpgconf --kill all; \ - rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \ - chmod +x /usr/local/bin/gosu; \ - gosu nobody true - # Configure Flink version -ENV FLINK_TGZ_URL=https://dlcdn.apache.org/flink/flink-2.0.2/flink-2.0.2-bin-scala_2.12.tgz \ - FLINK_ASC_URL=https://downloads.apache.org/flink/flink-2.0.2/flink-2.0.2-bin-scala_2.12.tgz.asc \ - GPG_KEY=F7529FAE24811A5C0DF3CA741596BBF0726835D8 \ +ENV FLINK_TGZ_URL=https://dlcdn.apache.org/flink/flink-2.3.0/flink-2.3.0-bin-scala_2.12.tgz \ + FLINK_ASC_URL=https://downloads.apache.org/flink/flink-2.3.0/flink-2.3.0-bin-scala_2.12.tgz.asc \ + GPG_KEY=E11F792053638C56C98ACFADB5B638DCA5F94E4A \ CHECK_GPG=true # Prepare environment @@ -88,6 +70,7 @@ RUN set -ex; \ "-rmKV" "taskmanager.host=localhost"; # Configure container +USER flink COPY docker-entrypoint.sh / ENTRYPOINT ["/docker-entrypoint.sh"] EXPOSE 6123 8081 diff --git a/2.0/scala_2.12-java17-ubuntu/docker-entrypoint.sh b/2.3/scala_2.12-java21-ubuntu/docker-entrypoint.sh similarity index 89% rename from 2.0/scala_2.12-java17-ubuntu/docker-entrypoint.sh rename to 2.3/scala_2.12-java21-ubuntu/docker-entrypoint.sh index e081109..cf63daa 100755 --- a/2.0/scala_2.12-java17-ubuntu/docker-entrypoint.sh +++ b/2.3/scala_2.12-java21-ubuntu/docker-entrypoint.sh @@ -25,16 +25,9 @@ COMMAND_HISTORY_SERVER="history-server" JOB_MANAGER_RPC_ADDRESS=${JOB_MANAGER_RPC_ADDRESS:-$(hostname -f)} CONF_FILE_DIR="${FLINK_HOME}/conf" -drop_privs_cmd() { - if [ $(id -u) != 0 ]; then - # Don't need to drop privs if EUID != 0 - return - elif [ -x /sbin/su-exec ]; then - # Alpine - echo su-exec flink - else - # Others - echo gosu flink +check_priv_user() { + if [ $(id -u) == 0 ]; then + echo "WARNING: Running as root user is not recommended. Please use a non-root user to run Flink." fi } @@ -146,6 +139,8 @@ maybe_enable_jemalloc() { fi } +check_priv_user + maybe_enable_jemalloc copy_plugins_if_required @@ -163,28 +158,28 @@ elif [ "$1" = "jobmanager" ]; then echo "Starting Job Manager" - exec $(drop_privs_cmd) "$FLINK_HOME/bin/jobmanager.sh" start-foreground "${args[@]}" + exec "$FLINK_HOME/bin/jobmanager.sh" start-foreground "${args[@]}" elif [ "$1" = ${COMMAND_STANDALONE} ]; then args=("${args[@]:1}") echo "Starting Job Manager" - exec $(drop_privs_cmd) "$FLINK_HOME/bin/standalone-job.sh" start-foreground "${args[@]}" + exec "$FLINK_HOME/bin/standalone-job.sh" start-foreground "${args[@]}" elif [ "$1" = ${COMMAND_HISTORY_SERVER} ]; then args=("${args[@]:1}") echo "Starting History Server" - exec $(drop_privs_cmd) "$FLINK_HOME/bin/historyserver.sh" start-foreground "${args[@]}" + exec "$FLINK_HOME/bin/historyserver.sh" start-foreground "${args[@]}" elif [ "$1" = "taskmanager" ]; then args=("${args[@]:1}") echo "Starting Task Manager" - exec $(drop_privs_cmd) "$FLINK_HOME/bin/taskmanager.sh" start-foreground "${args[@]}" + exec "$FLINK_HOME/bin/taskmanager.sh" start-foreground "${args[@]}" fi args=("${args[@]}") # Running command in pass-through mode -exec $(drop_privs_cmd) "${args[@]}" +exec "${args[@]}" diff --git a/2.3/scala_2.12-java21-ubuntu/release.metadata b/2.3/scala_2.12-java21-ubuntu/release.metadata new file mode 100644 index 0000000..e8800d1 --- /dev/null +++ b/2.3/scala_2.12-java21-ubuntu/release.metadata @@ -0,0 +1,2 @@ +Tags: 2.3.0-scala_2.12-java21, 2.3-scala_2.12-java21, scala_2.12-java21, 2.3.0-java21, 2.3-java21, java21 +Architectures: amd64,arm64v8