From a0849e40ef685468fe43836b5549e4c6c612ed3c Mon Sep 17 00:00:00 2001 From: colben Date: Tue, 6 Dec 2022 13:15:58 +0800 Subject: [PATCH] update --- alpine-python/alpine-python.sh | 2 +- alpine/alpine.sh | 2 +- centos7-django2.2/centos-django.sh | 2 +- centos7-python3.6/centos-python.sh | 2 +- centos7/centos.sh | 2 +- chromedriver/ADD/ccmd | 68 ++++++++++++++++++++++++++++ chromedriver/Dockerfile | 12 +++++ chromedriver/README.md | 5 +++ chromedriver/centos-chromedriver.sh | 67 +++++++++++++++++++++++++++ cloudreve/cloudreve.sh | 2 +- datax-web/datax-web.sh | 2 +- datax/datax.sh | 2 +- elasticsearch6/elasticsearch.sh | 2 +- elasticsearch7/elasticsearch.sh | 2 +- gitea/ADD/ccmd | 5 ++- gitea/Dockerfile | 3 +- gitea/gitea.sh | 2 +- jdk/jdk.sh | 2 +- jdk/jdk8.sh | 2 +- jdk/jdk8u202.sh | 2 +- kafka/kafka.sh | 2 +- keepalived/keepalived.sh | 2 +- kibana/kibana.sh | 2 +- letsencrypt/letsencrypt.sh | 2 +- logstash6/logstash.sh | 2 +- mariadb/mariadb.sh | 2 +- mongodb/mongodb.sh | 2 +- mysql/mysql.sh | 2 +- nginx-php/ADD/ccmd | 13 +++++- nginx-php/Dockerfile | 5 ++- nginx-php/nginx-php.sh | 2 +- nginx/nginx.sh | 2 +- ops/ops.sh | 2 +- photon/photon.sh | 2 +- prometheus/prometheus.sh | 2 +- redis/redis.sh | 2 +- rocky-django/rocky-django.sh | 2 +- rocky-python/rocky-python.sh | 2 +- rocky8/rocky.sh | 2 +- rsync/rsync.sh | 2 +- svn/svn.sh | 2 +- tomcat/ADD/ccmd | 4 +- tomcat/tomcat.sh | 2 +- ubuntu/ubuntu.sh | 2 +- xxl-job/.gitignore | 2 + xxl-job/ADD/ccmd | 70 +++++++++++++++++++++++++++++ xxl-job/Dockerfile | 16 +++++++ xxl-job/README.md | 24 ++++++++++ xxl-job/xxl-job-admin | 69 ++++++++++++++++++++++++++++ xxl-job/xxl-job.sh | 69 ++++++++++++++++++++++++++++ zabbix/zabbix.sh | 2 +- zookeeper/zookeeper.sh | 2 +- 52 files changed, 463 insertions(+), 43 deletions(-) create mode 100755 chromedriver/ADD/ccmd create mode 100644 chromedriver/Dockerfile create mode 100644 chromedriver/README.md create mode 100755 chromedriver/centos-chromedriver.sh create mode 100644 xxl-job/.gitignore create mode 100755 xxl-job/ADD/ccmd create mode 100644 xxl-job/Dockerfile create mode 100644 xxl-job/README.md create mode 100755 xxl-job/xxl-job-admin create mode 100755 xxl-job/xxl-job.sh diff --git a/alpine-python/alpine-python.sh b/alpine-python/alpine-python.sh index 71b5083..7c036fd 100755 --- a/alpine-python/alpine-python.sh +++ b/alpine-python/alpine-python.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/alpine/alpine.sh b/alpine/alpine.sh index 2d3ef7a..7cd2344 100755 --- a/alpine/alpine.sh +++ b/alpine/alpine.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -59,6 +58,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/centos7-django2.2/centos-django.sh b/centos7-django2.2/centos-django.sh index ee48606..fef95f1 100755 --- a/centos7-django2.2/centos-django.sh +++ b/centos7-django2.2/centos-django.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/centos7-python3.6/centos-python.sh b/centos7-python3.6/centos-python.sh index d9ff60c..9dede32 100755 --- a/centos7-python3.6/centos-python.sh +++ b/centos7-python3.6/centos-python.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/centos7/centos.sh b/centos7/centos.sh index 35cddbc..35ee396 100755 --- a/centos7/centos.sh +++ b/centos7/centos.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/chromedriver/ADD/ccmd b/chromedriver/ADD/ccmd new file mode 100755 index 0000000..13ae2d6 --- /dev/null +++ b/chromedriver/ADD/ccmd @@ -0,0 +1,68 @@ +#!/bin/bash + +################################################## +# Mount dir # +# - $ROOT/exports # +# - $ROOT/logs # +# ENV # +# - OPTS # +# - _CONF_* # +################################################## + +set -euo pipefail +export LANG=en_US.UTF-8 +trap Quit EXIT + +PIDS= +GOT_SIGTERM= +OPTS="${OPTS:-}" + +function Print { + local file=/dev/null + [ '-f' = "$1" ] && file=$2 && shift && shift + date +"[%F %T] $*" | tee -a $file +} + +function Quit { + while :; do + pkill -f chromedriver && Print killing chromedriver ... || break + sleep 1 + done + Print Container stopped. + test -n "$GOT_SIGTERM" +} + +function ModifyConf { + local kv= + Print Modify $JAR.properties ... + while read kv; do + [ -z "$kv" ] && return 0 + Print Modify property: ${kv%%=*} ... + sed -i "/^${kv%%=*} *=/c$kv" $JAR.properties + done <<< "$(env | grep '^_CONF_' | sed 's/_CONF_//')" +} + +function StartProc { + Print Start chromedriver ... + ./chromedriver --allowed-ips $OPTS \ + >/dev/null \ + 2>>logs/chromedriver.out & + PIDS="$PIDS $!" +} + +function Main { + local pid= + cd $(dirname $0) +# ModifyConf + StartProc + trap "GOT_SIGTERM=1; Print Got SIGTERM ..." SIGTERM + while [ -z "$GOT_SIGTERM" ] && sleep 1; do + for pid in $PIDS; do + [ ! -e /proc/$pid ] && Print Unexpected error! && exit + done + done +} + +# Start here +Main + diff --git a/chromedriver/Dockerfile b/chromedriver/Dockerfile new file mode 100644 index 0000000..d3de9be --- /dev/null +++ b/chromedriver/Dockerfile @@ -0,0 +1,12 @@ +ARG ARCH +FROM harbor.colben.cn/general/centos$ARCH:7 +MAINTAINER Colben colbenlee@gmail.com +ARG ROOT +ADD --chown=root:root /ADD/ccmd /ADD/chromedriver /ADD/google-chrome-stable_current_x86_64.rpm /opt/ +RUN ln -s /opt $ROOT \ + && mkdir -p $ROOT/logs \ + && yum makecache fast \ + && yum install -y /opt/google-chrome-stable_current_x86_64.rpm \ + && rm -rf /var/cache/yum \ + && rm -rf /opt/google-chrome-stable_current_x86_64.rpm +CMD ["/opt/ccmd"] diff --git a/chromedriver/README.md b/chromedriver/README.md new file mode 100644 index 0000000..26ecd59 --- /dev/null +++ b/chromedriver/README.md @@ -0,0 +1,5 @@ +# 构建 chromedriver 镜像 + +## 定制 +- 安装 google-chrome 和启动 chromedriver + diff --git a/chromedriver/centos-chromedriver.sh b/chromedriver/centos-chromedriver.sh new file mode 100755 index 0000000..eb6772e --- /dev/null +++ b/chromedriver/centos-chromedriver.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +#========================================= +# Author : colben +#========================================= + +set -euo pipefail +export LANG=en_US.UTF-8 + +[ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" +ROOT_DIR="$(cd $(dirname $0) && pwd)" +IMAGE="harbor.colben.cn/general/$(basename ${0%.sh})$ARCH:106" + +if [ -t 0 ]; then + function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } + function Warn { echo -e "\033[36;1m$(date +'[%F %T]')\033[33;1m $*\033[0m"; } + function Error { echo -e "\033[36;1m$(date +'[%F %T]')\033[31;1m $*\033[0m"; exit 1; } +else + function Print { echo -e "$(date +'[%F %T INFO]') $*"; } + function Warn { echo -e "$(date +'[%F %T WARN]') $*"; } + function Error { echo -e "$(date +'[%F %T ERROR]') $*"; exit 1; } +fi + +function Quit { + local exitCode=$? + [ 0 -ne $exitCode ] && Error Failed to build or push image! + [ -z "${END:-}" ] && echo && Error Interrupted manually! + Print Succeeded to build and push image. +} + +function YesOrNo { + Warn $* + local sw= + while :; do + read -p '(Yes/No/Quit) ' -n1 sw + [[ "$sw" =~ ^Y|y$ ]] && echo && return 0 + [[ "$sw" =~ ^N|n$ ]] && echo && return 1 + [[ "$sw" =~ ^Q|q$ ]] && echo && exit 0 + [ -n "$sw" ] && echo + done +} + +function Update { + : +} + +function Build { + local yn + cd $ROOT_DIR + docker images --format='{{.Repository}}:{{.Tag}}' | grep "^$IMAGE$" \ + && Warn Removing image $IMAGE ... \ + && docker rmi $IMAGE + Warn Building image: $IMAGE ... + docker build --force-rm --build-arg ARCH="$ARCH" --build-arg ROOT="/${ROOT_DIR##*/}" -t $IMAGE . + YesOrNo Push image: $IMAGE? && docker push $IMAGE +} + +function Main { + trap Quit EXIT + Update + Build + END=1 +} + +# Start here +Main + diff --git a/cloudreve/cloudreve.sh b/cloudreve/cloudreve.sh index ee214b0..386b137 100755 --- a/cloudreve/cloudreve.sh +++ b/cloudreve/cloudreve.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -66,6 +65,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/datax-web/datax-web.sh b/datax-web/datax-web.sh index 4f5fc78..4e3a638 100755 --- a/datax-web/datax-web.sh +++ b/datax-web/datax-web.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -67,6 +66,7 @@ function Build { } function Main { + trap Quit EXIT # Update Build END=1 diff --git a/datax/datax.sh b/datax/datax.sh index e69adb8..1cd62a7 100755 --- a/datax/datax.sh +++ b/datax/datax.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -67,6 +66,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/elasticsearch6/elasticsearch.sh b/elasticsearch6/elasticsearch.sh index 44dc23b..5c13398 100755 --- a/elasticsearch6/elasticsearch.sh +++ b/elasticsearch6/elasticsearch.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -71,6 +70,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/elasticsearch7/elasticsearch.sh b/elasticsearch7/elasticsearch.sh index ff28e0f..e395dbf 100755 --- a/elasticsearch7/elasticsearch.sh +++ b/elasticsearch7/elasticsearch.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -112,6 +111,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/gitea/ADD/ccmd b/gitea/ADD/ccmd index 2516029..bcd0d29 100755 --- a/gitea/ADD/ccmd +++ b/gitea/ADD/ccmd @@ -51,7 +51,10 @@ function ChangeOwner { function StartProc { Print Start gitea ... su - gitea -c ' - gitea web --config /var/lib/gitea/custom/conf/app.ini + gitea web \ + --work-path /var/lib/gitea \ + --custom-path /var/lib/gitea/custom \ + --config /var/lib/gitea/custom/conf/app.ini ' &>> /var/log/gitea/gitea.out & PIDS="$PIDS $!" } diff --git a/gitea/Dockerfile b/gitea/Dockerfile index 4db2269..d586ae3 100644 --- a/gitea/Dockerfile +++ b/gitea/Dockerfile @@ -2,7 +2,8 @@ ARG ARCH FROM harbor.colben.cn/general/alpine$ARCH MAINTAINER Colben colbenlee@gmail.com ADD --chown=root:root /ADD/ /opt/ -RUN apk update \ +RUN sed -i -e '/testing/d' -e 's/edge/latest-stable/' /etc/apk/repositories \ + && apk update \ && apk add --no-cache gitea \ && sed -i 's,/ash,/bash,' /etc/passwd \ && cd /var/lib \ diff --git a/gitea/gitea.sh b/gitea/gitea.sh index 71b5083..7c036fd 100755 --- a/gitea/gitea.sh +++ b/gitea/gitea.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/jdk/jdk.sh b/jdk/jdk.sh index d6a1c75..55f3e1b 100755 --- a/jdk/jdk.sh +++ b/jdk/jdk.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -63,6 +62,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/jdk/jdk8.sh b/jdk/jdk8.sh index 05b30e9..24f2af6 100755 --- a/jdk/jdk8.sh +++ b/jdk/jdk8.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -62,6 +61,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/jdk/jdk8u202.sh b/jdk/jdk8u202.sh index bfa6a25..894c820 100755 --- a/jdk/jdk8u202.sh +++ b/jdk/jdk8u202.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -68,6 +67,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/kafka/kafka.sh b/kafka/kafka.sh index bd1e5af..7b26a86 100755 --- a/kafka/kafka.sh +++ b/kafka/kafka.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -67,6 +66,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/keepalived/keepalived.sh b/keepalived/keepalived.sh index 71b5083..7c036fd 100755 --- a/keepalived/keepalived.sh +++ b/keepalived/keepalived.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/kibana/kibana.sh b/kibana/kibana.sh index 8ae33bb..2a1ed96 100755 --- a/kibana/kibana.sh +++ b/kibana/kibana.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -67,6 +66,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/letsencrypt/letsencrypt.sh b/letsencrypt/letsencrypt.sh index 71b5083..7c036fd 100755 --- a/letsencrypt/letsencrypt.sh +++ b/letsencrypt/letsencrypt.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/logstash6/logstash.sh b/logstash6/logstash.sh index 4ffda65..6894636 100755 --- a/logstash6/logstash.sh +++ b/logstash6/logstash.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -66,6 +65,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/mariadb/mariadb.sh b/mariadb/mariadb.sh index 71b5083..7c036fd 100755 --- a/mariadb/mariadb.sh +++ b/mariadb/mariadb.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/mongodb/mongodb.sh b/mongodb/mongodb.sh index 71b5083..7c036fd 100755 --- a/mongodb/mongodb.sh +++ b/mongodb/mongodb.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/mysql/mysql.sh b/mysql/mysql.sh index 773bc26..339ca23 100755 --- a/mysql/mysql.sh +++ b/mysql/mysql.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/nginx-php/ADD/ccmd b/nginx-php/ADD/ccmd index 0ed95f0..5f6f407 100755 --- a/nginx-php/ADD/ccmd +++ b/nginx-php/ADD/ccmd @@ -7,6 +7,8 @@ # - /var/lib/nginx/html # # - /var/log/nginx # # - /var/log/php7 # +# ENV # +# - GLOBAL_DIRECTIVES # ################################################## set -euo pipefail @@ -15,6 +17,7 @@ trap Quit EXIT PIDS= GOT_SIGTERM= +GLOBAL_DIRECTIVES="${GLOBAL_DIRECTIVES:-user nginx;worker_processes auto;}" function Print { local file=/dev/null @@ -24,6 +27,8 @@ function Print { function Quit { local running + Print killing nginx ... + nginx -s quit || true while running= ; do pkill -f php-fpm7 && running=1 && Print killing php-fpm7 ... pkill -f sleep && running=1 && Print killing sleep ... @@ -35,6 +40,11 @@ function Quit { test -n "$GOT_SIGTERM" } +function ChangeOwner { + Print Change file owner ... + chown nginx.root /var/log/nginx/ +} + function SideCar { local day= last_day=$(date +%d) local md5= last_md5=$(find /etc/nginx/ -type f -name "*.conf" \ @@ -61,7 +71,7 @@ function StartProc { php-fpm7 -F -y /etc/php7/php-fpm.conf & PIDS="$PIDS $!" Print Start nginx ... - nginx -g 'daemon off;pid /run/nginx/nginx.pid;' & + nginx -g "$GLOBAL_DIRECTIVES" & PIDS="$PIDS $!" Print Start nginx sidecar ... SideCar & @@ -70,6 +80,7 @@ function StartProc { function Main { local pid= + ChangeOwner StartProc trap "GOT_SIGTERM=1; Print Got SIGTERM ..." SIGTERM while [ -z "$GOT_SIGTERM" ] && sleep 1; do diff --git a/nginx-php/Dockerfile b/nginx-php/Dockerfile index f821412..c2a5928 100644 --- a/nginx-php/Dockerfile +++ b/nginx-php/Dockerfile @@ -2,11 +2,12 @@ ARG ARCH FROM harbor.colben.cn/general/nginx$ARCH MAINTAINER Colben colbenlee@gmail.com ADD --chown=root:root /ADD/ /opt/ -RUN apk update \ +RUN sed -i '/edge/d' /etc/apk/repositories \ + && apk update \ && apk add --no-cache php7 php7-common php7-iconv php7-json php7-gd php7-curl php7-xml \ php7-mysqli php7-imap php7-cgi fcgi php7-pdo php7-pdo_mysql php7-soap php7-xmlrpc \ php7-posix php7-mcrypt php7-gettext php7-ldap php7-ctype php7-dom php7-fpm \ - php7-mbstring php7-mysqlnd php7-bcmath php7-session php7-openssl php7-opcache \ + php7-mbstring php7-mysqlnd php7-bcmath php7-session php7-openssl php7-opcache composer \ && sed -i -e '/^;* *max_execution_time *=/cmax_execution_time = 300' \ -e '/^;* *memory_limit *=/cmemory_limit = 1024M' \ -e '/^;* *post_max_size *=/cpost_max_size = 1024M' \ diff --git a/nginx-php/nginx-php.sh b/nginx-php/nginx-php.sh index 71b5083..7c036fd 100755 --- a/nginx-php/nginx-php.sh +++ b/nginx-php/nginx-php.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/nginx/nginx.sh b/nginx/nginx.sh index 71b5083..7c036fd 100755 --- a/nginx/nginx.sh +++ b/nginx/nginx.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/ops/ops.sh b/ops/ops.sh index f027ed7..13ca58b 100755 --- a/ops/ops.sh +++ b/ops/ops.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -68,6 +67,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/photon/photon.sh b/photon/photon.sh index 2d3ef7a..7cd2344 100755 --- a/photon/photon.sh +++ b/photon/photon.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -59,6 +58,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/prometheus/prometheus.sh b/prometheus/prometheus.sh index 4be956b..60eafd9 100755 --- a/prometheus/prometheus.sh +++ b/prometheus/prometheus.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -65,6 +64,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/redis/redis.sh b/redis/redis.sh index 71b5083..7c036fd 100755 --- a/redis/redis.sh +++ b/redis/redis.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/rocky-django/rocky-django.sh b/rocky-django/rocky-django.sh index 71b5083..7c036fd 100755 --- a/rocky-django/rocky-django.sh +++ b/rocky-django/rocky-django.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/rocky-python/rocky-python.sh b/rocky-python/rocky-python.sh index 71b5083..7c036fd 100755 --- a/rocky-python/rocky-python.sh +++ b/rocky-python/rocky-python.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/rocky8/rocky.sh b/rocky8/rocky.sh index b01402c..fc4ea95 100755 --- a/rocky8/rocky.sh +++ b/rocky8/rocky.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -59,6 +58,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/rsync/rsync.sh b/rsync/rsync.sh index 71b5083..7c036fd 100755 --- a/rsync/rsync.sh +++ b/rsync/rsync.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/svn/svn.sh b/svn/svn.sh index 71b5083..7c036fd 100755 --- a/svn/svn.sh +++ b/svn/svn.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/tomcat/ADD/ccmd b/tomcat/ADD/ccmd index 0b995ef..f7d2dff 100755 --- a/tomcat/ADD/ccmd +++ b/tomcat/ADD/ccmd @@ -6,6 +6,7 @@ # - /opt/tomcat/logs # # ENV # # - JAVA_OPTS # +# - CATALINA_OUT # ################################################## set -euo pipefail @@ -14,6 +15,7 @@ trap Quit EXIT PIDS= GOT_SIGTERM= +CATALINA_OUT=${CATALINA_OUT:-/dev/null} export JAVA_OPTS="-server -Djava.security.egd=file:/dev/./urandom -Duser.timezone=GMT+08 ${JAVA_OPTS:-}" function Print { @@ -42,7 +44,7 @@ function RestoreConf { function StartProc { Print Start tomcat ... - ./bin/catalina.sh run &> /dev/null & + ./bin/catalina.sh run &>> $CATALINA_OUT & PIDS="$PIDS $!" } diff --git a/tomcat/tomcat.sh b/tomcat/tomcat.sh index 22c9d5b..e55b212 100755 --- a/tomcat/tomcat.sh +++ b/tomcat/tomcat.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -58,6 +57,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/ubuntu/ubuntu.sh b/ubuntu/ubuntu.sh index 5bc768e..4504afc 100755 --- a/ubuntu/ubuntu.sh +++ b/ubuntu/ubuntu.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -59,6 +58,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/xxl-job/.gitignore b/xxl-job/.gitignore new file mode 100644 index 0000000..9a998e2 --- /dev/null +++ b/xxl-job/.gitignore @@ -0,0 +1,2 @@ +*.jar +*.properties diff --git a/xxl-job/ADD/ccmd b/xxl-job/ADD/ccmd new file mode 100755 index 0000000..5ea6a45 --- /dev/null +++ b/xxl-job/ADD/ccmd @@ -0,0 +1,70 @@ +#!/bin/bash + +################################################## +# Mount dir # +# - /data/applogs # +# ENV # +# - JAVA_OPTS # +################################################## + +set -euo pipefail +export LANG=en_US.UTF-8 +trap Quit EXIT + +PIDS= +GOT_SIGTERM= +export JAVA_OPTS="-server -Djava.security.egd=file:/dev/./urandom -Duser.timezone=GMT+08 ${JAVA_OPTS:-}" + +function Print { + local file=/dev/null + [ '-f' = "$1" ] && file=$2 && shift && shift + date +"[%F %T] $*" | tee -a $file +} + +function Quit { + Print killing java ... + while :; do + pkill -f java && Print killing java ... || break + sleep 1 + done + Print Container stopped. + test -n "$GOT_SIGTERM" +} + +function ModifyConf { + sed -i 's/^M//g' $JAR.properties + local kv= + Print Modify $JAR.properties ... + while read kv; do + [ -z "$kv" ] && return 0 + Print Modify property: ${kv%%=*} ... + sed -i "/^${kv%%=*} *=/c$kv" $JAR.properties + done <<< "$(env | grep '^_CONF_' | sed 's/_CONF_//')" +} + +function StartProc { + Print Start $JAR ... + java $JAVA_OPTS \ + -jar $JAR.jar \ + --spring.config.location=$JAR.properties \ + >/dev/null \ + 2>>logs/$JAR.out & + PIDS="$PIDS $!" +} + +function Main { + local pid= + cd /opt/ + ModifyConf + StartProc + trap "GOT_SIGTERM=1; Print Got SIGTERM ..." SIGTERM + while [ -z "$GOT_SIGTERM" ] && sleep 1; do + for pid in $PIDS; do + [ ! -e /proc/$pid ] && Print Unexpected error! && exit + done + done +} + +# Start here +Main + diff --git a/xxl-job/Dockerfile b/xxl-job/Dockerfile new file mode 100644 index 0000000..fdf8205 --- /dev/null +++ b/xxl-job/Dockerfile @@ -0,0 +1,16 @@ +ARG ARCH +FROM harbor.colben.cn/general/jdk$ARCH:8 +MAINTAINER Colben colbenlee@gmail.com +ARG VERSION +ARG ROOT +ARG JAR +ENV JAR="${JAR:?}" +ADD --chown=root:root /ADD/ccmd /ADD/$JAR.jar /ADD/$JAR.properties /opt/ +RUN cd /opt && mkdir logs \ + && sed -i \ + -e "/^spring\.datasource\.url *=/cspring.datasource.url=jdbc:mysql://mysql:3306/xxl_job?Unicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false" \ + -e "/^spring\.datasource\.username *=/cspring.datasource.username=cm_dwh" \ + -e "/^spring\.datasource\.password *=/cspring.datasource.password=Cm_dwh_1234" \ + $ROOT/$JAR.properties +CMD ["/opt/ccmd"] + diff --git a/xxl-job/README.md b/xxl-job/README.md new file mode 100644 index 0000000..b714661 --- /dev/null +++ b/xxl-job/README.md @@ -0,0 +1,24 @@ +# 构建 xxl-job 镜像 + +## 定制 +- 开启 app.jar + +## 外挂目录和文件 +- /data/applogs: 日志目录 +- /opt/logs: 日志目录 + +## 引入环境变量 +- JAVA_OPTS: jvm 参数 + +## 案例 +- 开源社区地址 https://www.xuxueli.com/xxl-job/ +- 调度中心访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址) + +- 默认登录账号 “admin/123456”, 登录后运行界面如下图所示。 +- 数据库在源码中 xxl-job-2.3.1/doc/db/tables_xxl_job.sql +- 导入数据库后 需要创建 用户密码 + +``` + create user admin@'%' identified by '123456'; + grant all on xxl_job.* to admin@'%'; +``` diff --git a/xxl-job/xxl-job-admin b/xxl-job/xxl-job-admin new file mode 100755 index 0000000..e32c1ca --- /dev/null +++ b/xxl-job/xxl-job-admin @@ -0,0 +1,69 @@ +#!/bin/bash + +#========================================= +# Author : colben +#========================================= + +set -euo pipefail +export LANG=en_US.UTF-8 + +[ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" +ROOT_DIR="$(cd $(dirname $0) && pwd)" +JAR="$(basename $0)" +VERSION=$1 +IMAGE="harbor.colben.cn/general/$(basename ${0%.sh})$ARCH:${VERSION}" + +if [ -t 0 ]; then + function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } + function Warn { echo -e "\033[36;1m$(date +'[%F %T]')\033[33;1m $*\033[0m"; } + function Error { echo -e "\033[36;1m$(date +'[%F %T]')\033[31;1m $*\033[0m"; exit 1; } +else + function Print { echo -e "$(date +'[%F %T INFO]') $*"; } + function Warn { echo -e "$(date +'[%F %T WARN]') $*"; } + function Error { echo -e "$(date +'[%F %T ERROR]') $*"; exit 1; } +fi + +function Quit { + local exitCode=$? + [ 0 -ne $exitCode ] && Error Failed to build or push image! + [ -z "${END:-}" ] && echo && Error Interrupted manually! + Print Succeeded to build and push image. +} + +function YesOrNo { + Warn $* + local sw= + while :; do + read -p '(Yes/No/Quit) ' -n1 sw + [[ "$sw" =~ ^Y|y$ ]] && echo && return 0 + [[ "$sw" =~ ^N|n$ ]] && echo && return 1 + [[ "$sw" =~ ^Q|q$ ]] && echo && exit 0 + [ -n "$sw" ] && echo + done +} + +function Update { + : +} + +function Build { + local yn + cd $ROOT_DIR + docker images --format='{{.Repository}}:{{.Tag}}' | grep "^$IMAGE$" \ + && Warn Removing image $IMAGE ... \ + && docker rmi $IMAGE + Warn Building image: $IMAGE ... + docker build --force-rm --build-arg ARCH="$ARCH" --build-arg JAR="$JAR" --build-arg ROOT="/opt" --build-arg VERSION="$VERSION" -t $IMAGE . + YesOrNo Push image: $IMAGE? && docker push $IMAGE +} + +function Main { + trap Quit EXIT + Update + Build + END=1 +} + +# Start here +Main + diff --git a/xxl-job/xxl-job.sh b/xxl-job/xxl-job.sh new file mode 100755 index 0000000..e32c1ca --- /dev/null +++ b/xxl-job/xxl-job.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +#========================================= +# Author : colben +#========================================= + +set -euo pipefail +export LANG=en_US.UTF-8 + +[ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" +ROOT_DIR="$(cd $(dirname $0) && pwd)" +JAR="$(basename $0)" +VERSION=$1 +IMAGE="harbor.colben.cn/general/$(basename ${0%.sh})$ARCH:${VERSION}" + +if [ -t 0 ]; then + function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } + function Warn { echo -e "\033[36;1m$(date +'[%F %T]')\033[33;1m $*\033[0m"; } + function Error { echo -e "\033[36;1m$(date +'[%F %T]')\033[31;1m $*\033[0m"; exit 1; } +else + function Print { echo -e "$(date +'[%F %T INFO]') $*"; } + function Warn { echo -e "$(date +'[%F %T WARN]') $*"; } + function Error { echo -e "$(date +'[%F %T ERROR]') $*"; exit 1; } +fi + +function Quit { + local exitCode=$? + [ 0 -ne $exitCode ] && Error Failed to build or push image! + [ -z "${END:-}" ] && echo && Error Interrupted manually! + Print Succeeded to build and push image. +} + +function YesOrNo { + Warn $* + local sw= + while :; do + read -p '(Yes/No/Quit) ' -n1 sw + [[ "$sw" =~ ^Y|y$ ]] && echo && return 0 + [[ "$sw" =~ ^N|n$ ]] && echo && return 1 + [[ "$sw" =~ ^Q|q$ ]] && echo && exit 0 + [ -n "$sw" ] && echo + done +} + +function Update { + : +} + +function Build { + local yn + cd $ROOT_DIR + docker images --format='{{.Repository}}:{{.Tag}}' | grep "^$IMAGE$" \ + && Warn Removing image $IMAGE ... \ + && docker rmi $IMAGE + Warn Building image: $IMAGE ... + docker build --force-rm --build-arg ARCH="$ARCH" --build-arg JAR="$JAR" --build-arg ROOT="/opt" --build-arg VERSION="$VERSION" -t $IMAGE . + YesOrNo Push image: $IMAGE? && docker push $IMAGE +} + +function Main { + trap Quit EXIT + Update + Build + END=1 +} + +# Start here +Main + diff --git a/zabbix/zabbix.sh b/zabbix/zabbix.sh index 71b5083..7c036fd 100755 --- a/zabbix/zabbix.sh +++ b/zabbix/zabbix.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -57,6 +56,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1 diff --git a/zookeeper/zookeeper.sh b/zookeeper/zookeeper.sh index 53b742e..4703db6 100755 --- a/zookeeper/zookeeper.sh +++ b/zookeeper/zookeeper.sh @@ -6,7 +6,6 @@ set -euo pipefail export LANG=en_US.UTF-8 -trap Quit EXIT [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" @@ -65,6 +64,7 @@ function Build { } function Main { + trap Quit EXIT Update Build END=1