From e3077360a77ce2d11eafa685ae7facf3e7803a28 Mon Sep 17 00:00:00 2001 From: Hongzhan Chen Date: Tue, 11 Jun 2019 03:20:35 -0400 Subject: [PATCH] Add flink container --- .travis.yml | 1 + flink/Dockerfile | 24 ++++++++++ flink/README.md | 31 +++++++++++++ flink/docker-entrypoint.sh | 90 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 146 insertions(+) create mode 100644 flink/Dockerfile create mode 100644 flink/README.md create mode 100644 flink/docker-entrypoint.sh diff --git a/.travis.yml b/.travis.yml index dcd346a..aef6517 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,7 @@ env: - DOCKERFILE_DIR=clr-installer-ci - DOCKERFILE_DIR=clr-sdk - DOCKERFILE_DIR=elasticsearch + - DOCKERFILE_DIR=flink - DOCKERFILE_DIR=golang - DOCKERFILE_DIR=haproxy - DOCKERFILE_DIR=httpd diff --git a/flink/Dockerfile b/flink/Dockerfile new file mode 100644 index 0000000..8f74da5 --- /dev/null +++ b/flink/Dockerfile @@ -0,0 +1,24 @@ +FROM clearlinux:latest +MAINTAINER hongzhan.chen@intel.com + +#Install apache-flink bundle +RUN swupd update --no-boot-update $swupd_args +RUN swupd bundle-add apache-flink $swupd_arg \ + && rm -rf /var/lib/swupd/* + +# Configure Flink version +ENV FLINK_VERSION=1.7.2 + +# Prepare environment +ENV FLINK_HOME=/usr/share/flink +ENV PATH=$FLINK_HOME/bin:$PATH + +# Prepare to run +RUN mkdir -p /var/log/flink + +COPY docker-entrypoint.sh /usr/local/bin/ +RUN chmod +x /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["docker-entrypoint.sh"] +EXPOSE 6123 8081 +CMD ["help"] diff --git a/flink/README.md b/flink/README.md new file mode 100644 index 0000000..5dd66d8 --- /dev/null +++ b/flink/README.md @@ -0,0 +1,31 @@ +Flink +========== +This provides a Clear Linux* flink container + +Build +----- +``` +docker build -t clearlinux/flink . +``` + +Or just pull it from Dockerhub +--------------------------- +``` +docker pull clearlinux/flink +``` + +Start flink Container +----------------------- +``` +docker run -d clearlinux/flink +``` + +How to use this image +--------------------- +- See ``How to use this image`` section of the official flink image [page](https://hub.docker.com/_/flink). + +Extra Build ARGs +---------------- +- ``swupd_args`` Specifies [SWUPD](https://github.com/clearlinux/swupd-client/blob/master/docs/swupd.1.rst#options) flags + +Default build args in Docker are on: https://docs.docker.com/engine/reference/builder/#arg diff --git a/flink/docker-entrypoint.sh b/flink/docker-entrypoint.sh new file mode 100644 index 0000000..11fb2e9 --- /dev/null +++ b/flink/docker-entrypoint.sh @@ -0,0 +1,90 @@ +#!/bin/sh + +############################################################################### +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +############################################################################### + +# 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="/usr/share/defaults/flink/flink-conf.yaml" + +drop_privs_cmd() { + return +} + +if [ "$1" = "help" ]; then + echo "Usage: $(basename "$0") (jobmanager|taskmanager|help)" + exit 0 +elif [ "$1" = "jobmanager" ]; then + shift 1 + echo "Starting Job Manager" + + 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)} + + 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 "^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 "$@"