From a607719b46833ec71260013f468257a78333bee5 Mon Sep 17 00:00:00 2001 From: colben Date: Sat, 1 Nov 2025 21:18:29 +0800 Subject: [PATCH] update --- alpine-3.12/README.md | 11 -- alpine-3.12/alpine.sh | 69 ------- alpine-3.15/README.md | 11 -- alpine-3.15/alpine.sh | 69 ------- alpine-python/Dockerfile | 2 +- .../Dockerfile => alpine/Dockerfile-3.12 | 0 .../Dockerfile => alpine/Dockerfile-3.15 | 0 alpine/Dockerfile-3.17 | 14 ++ alpine/{Dockerfile => Dockerfile-3.20} | 0 alpine/alpine.sh | 5 +- cloudreve/ADD/ccmd | 22 ++- cloudreve/Demo/SingleNode/docker-compose.yml | 2 +- cloudreve/Dockerfile | 3 +- cloudreve/cloudreve.sh | 7 - datax/Demo/MultiProc/docker-compose.yml | 4 +- datax/Demo/SingleProc/docker-compose.yml | 2 +- .../Demo/SingleNode/docker-compose.yml | 2 +- .../Demo/ThreeNodes/docker-compose.yml | 6 +- .../Demo/MultiRoles/docker-compose.yml | 10 +- .../Demo/SingleNode/docker-compose.yml | 2 +- .../Demo/ThreeNodes/docker-compose.yml | 6 +- gitea/Demo/GiteaWithNginx/docker-compose.yml | 4 +- gitea/Demo/SingleNode/docker-compose.yml | 2 +- gitea/gitea.sh | 4 +- greatsql/ADD/ccmd | 30 ++- .../{Dockerfile-greatsql8 => Dockerfile-8} | 36 ++-- greatsql/{greatsql8.sh => greatsql.sh} | 13 +- jdk/Dockerfile | 6 +- kafka/{ADD => ADD-2}/ccmd | 0 kafka/ADD-4/ccmd | 109 +++++++++++ kafka/Demo/MultiNodes/README.md | 31 ++++ kafka/Demo/MultiNodes/docker-compose.yml | 123 +++++++++++++ kafka/Demo/SingleNode/README.md | 8 +- kafka/Demo/SingleNode/docker-compose.yml | 41 +---- kafka/Demo/ThreeNodes/README.md | 15 -- kafka/Demo/ThreeNodes/docker-compose.yml | 138 -------------- kafka/Demo/ThreeServerNodes/README.md | 31 ++++ .../Demo/ThreeServerNodes/docker-compose.yml | 75 ++++++++ kafka/Dockerfile | 3 +- kafka/kafka.sh | 39 +++- kibana/Demo/SingleNode/docker-compose.yml | 2 +- .../Demo/SingleNode/docker-compose.yml | 6 +- letsencrypt/Demo/SingleNode/tencent-api.sh | 174 +++++++----------- letsencrypt/Dockerfile | 15 +- letsencrypt/letsencrypt.sh | 5 +- logstash6/Demo/SingleNode/docker-compose.yml | 2 +- mariadb/ADD/ccmd | 51 +++-- mariadb/Demo/SingleNode/docker-compose.yml | 2 +- mariadb/{Dockerfile => Dockerfile-10.6} | 2 +- mariadb/mariadb.sh | 5 +- mongodb/Demo/SingleNode/docker-compose.yml | 2 +- mysql/ADD/ccmd | 8 +- mysql/Demo/SingleNode/docker-compose.yml | 2 +- mysql/Demo/TwoMasterNodes/docker-compose.yml | 4 +- mysql/{Dockerfile-mysql5.7 => Dockerfile-5.7} | 3 +- mysql/{Dockerfile-mysql8 => Dockerfile-8} | 13 +- mysql/{mysql8.sh => mysql.sh} | 5 +- nginx-1.20.2/ADD/ccmd | 91 --------- nginx-1.20.2/Demo/SingleNode/README.md | 17 -- .../Demo/SingleNode/docker-compose.yml | 22 --- .../Demo/SingleNode/nginx/http.d/80.conf | 5 - nginx-1.20.2/Demo/TwoNodes/README.md | 19 -- nginx-1.20.2/Demo/TwoNodes/docker-compose.yml | 38 ---- .../TwoNodes/keepalived/conf/keepalived.conf | 33 ---- .../Demo/TwoNodes/nginx/http.d/80.conf | 5 - nginx-1.20.2/README.md | 20 -- nginx-1.20.2/nginx.sh | 67 ------- .../Demo/SingleNode/docker-compose.yml | 25 --- nginx-php-7.4/nginx-php.sh | 67 ------- nginx-php-8.1/Demo/SingleNode/README.md | 17 -- .../Demo/SingleNode/docker-compose.yml | 25 --- .../Demo/SingleNode/nginx/http.d/80.conf | 25 --- nginx-php-8.1/README.md | 17 -- nginx-php-8.1/nginx-php.sh | 67 ------- {nginx-php-7.4/ADD => nginx-php/ADD-7.4}/ccmd | 0 {nginx-php-8.1/ADD => nginx-php/ADD-8.1}/ccmd | 0 .../Demo/SingleNode/README.md | 0 nginx-php/Demo/SingleNode/docker-compose.yml | 45 +++++ .../Demo/SingleNode/nginx/http.d/80.conf | 0 .../Dockerfile => nginx-php/Dockerfile-7.4 | 4 +- .../Dockerfile => nginx-php/Dockerfile-8.1 | 2 +- {nginx-php-7.4 => nginx-php}/README.md | 3 +- mysql/mysql5.7.sh => nginx-php/nginx-php.sh | 5 +- nginx/Demo/SingleNode/docker-compose.yml | 2 +- nginx/Demo/TwoNodes/docker-compose.yml | 4 +- .../Dockerfile => nginx/Dockerfile-1.20 | 0 nginx/{Dockerfile => Dockerfile-latest} | 2 +- nginx/nginx.sh | 5 +- pgsql/ADD/ccmd | 4 +- pgsql/Demo/SingleNode/docker-compose.yml | 2 +- .../Demo/StreamReplication/docker-compose.yml | 4 +- pgsql/Dockerfile | 8 +- pgsql/pgsql.sh | 6 +- photon/{Dockerfile => Dockerfile-4} | 4 +- photon/Dockerfile-5 | 10 + photon/photon.sh | 5 +- prometheus/Demo/SingleNode/docker-compose.yml | 2 +- redis/Demo/SingleNode/docker-compose.yml | 2 +- redis/Demo/SixNodes/docker-compose.yml | 12 +- redis/Demo/ThreeNodes/docker-compose.yml | 6 +- redis/Dockerfile | 8 +- rocky-django/Dockerfile | 2 +- rocky-python/Dockerfile | 7 - rocky-python/Dockerfile-3.11 | 7 + rocky-python/Dockerfile-3.9 | 7 + rocky-python/README.md | 2 +- rocky-python/rocky-python.sh | 5 +- rocky8/Dockerfile => rocky/Dockerfile-8 | 14 +- {rocky8 => rocky}/README.md | 0 {rocky8 => rocky}/rocky.sh | 5 +- rsync/Demo/SingleNode/docker-compose.yml | 2 +- svn/Demo/SingleNode/docker-compose.yml | 2 +- svn/Dockerfile | 2 +- tomcat/Demo/SingleNode/docker-compose.yml | 2 +- vsftpd/Demo/docker-compose.yml | 6 +- vsftpd/Dockerfile | 2 +- zabbix/Demo/SingleNode/docker-compose.yml | 2 +- zookeeper/Demo/SingleNode/docker-compose.yml | 2 +- zookeeper/Demo/ThreeNodes/docker-compose.yml | 6 +- 119 files changed, 815 insertions(+), 1221 deletions(-) delete mode 100644 alpine-3.12/README.md delete mode 100755 alpine-3.12/alpine.sh delete mode 100644 alpine-3.15/README.md delete mode 100755 alpine-3.15/alpine.sh rename alpine-3.12/Dockerfile => alpine/Dockerfile-3.12 (100%) rename alpine-3.15/Dockerfile => alpine/Dockerfile-3.15 (100%) create mode 100644 alpine/Dockerfile-3.17 rename alpine/{Dockerfile => Dockerfile-3.20} (100%) rename greatsql/{Dockerfile-greatsql8 => Dockerfile-8} (88%) rename greatsql/{greatsql8.sh => greatsql.sh} (84%) rename kafka/{ADD => ADD-2}/ccmd (100%) create mode 100755 kafka/ADD-4/ccmd create mode 100644 kafka/Demo/MultiNodes/README.md create mode 100644 kafka/Demo/MultiNodes/docker-compose.yml delete mode 100644 kafka/Demo/ThreeNodes/README.md delete mode 100644 kafka/Demo/ThreeNodes/docker-compose.yml create mode 100644 kafka/Demo/ThreeServerNodes/README.md create mode 100644 kafka/Demo/ThreeServerNodes/docker-compose.yml rename mariadb/{Dockerfile => Dockerfile-10.6} (95%) rename mysql/{Dockerfile-mysql5.7 => Dockerfile-5.7} (95%) rename mysql/{Dockerfile-mysql8 => Dockerfile-8} (81%) rename mysql/{mysql8.sh => mysql.sh} (95%) delete mode 100755 nginx-1.20.2/ADD/ccmd delete mode 100644 nginx-1.20.2/Demo/SingleNode/README.md delete mode 100644 nginx-1.20.2/Demo/SingleNode/docker-compose.yml delete mode 100644 nginx-1.20.2/Demo/SingleNode/nginx/http.d/80.conf delete mode 100644 nginx-1.20.2/Demo/TwoNodes/README.md delete mode 100644 nginx-1.20.2/Demo/TwoNodes/docker-compose.yml delete mode 100644 nginx-1.20.2/Demo/TwoNodes/keepalived/conf/keepalived.conf delete mode 100644 nginx-1.20.2/Demo/TwoNodes/nginx/http.d/80.conf delete mode 100644 nginx-1.20.2/README.md delete mode 100755 nginx-1.20.2/nginx.sh delete mode 100644 nginx-php-7.4/Demo/SingleNode/docker-compose.yml delete mode 100755 nginx-php-7.4/nginx-php.sh delete mode 100644 nginx-php-8.1/Demo/SingleNode/README.md delete mode 100644 nginx-php-8.1/Demo/SingleNode/docker-compose.yml delete mode 100644 nginx-php-8.1/Demo/SingleNode/nginx/http.d/80.conf delete mode 100644 nginx-php-8.1/README.md delete mode 100755 nginx-php-8.1/nginx-php.sh rename {nginx-php-7.4/ADD => nginx-php/ADD-7.4}/ccmd (100%) rename {nginx-php-8.1/ADD => nginx-php/ADD-8.1}/ccmd (100%) rename {nginx-php-7.4 => nginx-php}/Demo/SingleNode/README.md (100%) create mode 100644 nginx-php/Demo/SingleNode/docker-compose.yml rename {nginx-php-7.4 => nginx-php}/Demo/SingleNode/nginx/http.d/80.conf (100%) rename nginx-php-7.4/Dockerfile => nginx-php/Dockerfile-7.4 (94%) rename nginx-php-8.1/Dockerfile => nginx-php/Dockerfile-8.1 (97%) rename {nginx-php-7.4 => nginx-php}/README.md (88%) rename mysql/mysql5.7.sh => nginx-php/nginx-php.sh (94%) rename nginx-1.20.2/Dockerfile => nginx/Dockerfile-1.20 (100%) rename nginx/{Dockerfile => Dockerfile-latest} (93%) rename photon/{Dockerfile => Dockerfile-4} (90%) create mode 100644 photon/Dockerfile-5 delete mode 100644 rocky-python/Dockerfile create mode 100644 rocky-python/Dockerfile-3.11 create mode 100644 rocky-python/Dockerfile-3.9 rename rocky8/Dockerfile => rocky/Dockerfile-8 (64%) rename {rocky8 => rocky}/README.md (100%) rename {rocky8 => rocky}/rocky.sh (93%) diff --git a/alpine-3.12/README.md b/alpine-3.12/README.md deleted file mode 100644 index 26d5d4e..0000000 --- a/alpine-3.12/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# 构建 alpine 镜像 - -## 导入文件 -- 本机时区 /etc/localtime - -## 定制 -- 使用 Asia/Shanghai 时区 -- 修改软件源,开启 edge -- 安装 bash curl coreutils iproute2 -- 默认语言 en_US.UTF-8 - diff --git a/alpine-3.12/alpine.sh b/alpine-3.12/alpine.sh deleted file mode 100755 index 0a6b2d9..0000000 --- a/alpine-3.12/alpine.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/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:3.12" - -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 { - Warn Preparing localtime ... - cd $ROOT_DIR - cp -f /etc/localtime ADD/ -} - -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 -t $IMAGE . - YesOrNo Push image: $IMAGE? && docker push $IMAGE -} - -function Main { - trap Quit EXIT - Update - Build - END=1 -} - -# Start here -Main - diff --git a/alpine-3.15/README.md b/alpine-3.15/README.md deleted file mode 100644 index 26d5d4e..0000000 --- a/alpine-3.15/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# 构建 alpine 镜像 - -## 导入文件 -- 本机时区 /etc/localtime - -## 定制 -- 使用 Asia/Shanghai 时区 -- 修改软件源,开启 edge -- 安装 bash curl coreutils iproute2 -- 默认语言 en_US.UTF-8 - diff --git a/alpine-3.15/alpine.sh b/alpine-3.15/alpine.sh deleted file mode 100755 index f460068..0000000 --- a/alpine-3.15/alpine.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/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:3.15" - -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 { - Warn Preparing localtime ... - cd $ROOT_DIR - cp -f /etc/localtime ADD/ -} - -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 -t $IMAGE . - YesOrNo Push image: $IMAGE? && docker push $IMAGE -} - -function Main { - trap Quit EXIT - Update - Build - END=1 -} - -# Start here -Main - diff --git a/alpine-python/Dockerfile b/alpine-python/Dockerfile index e06643a..a4ac175 100644 --- a/alpine-python/Dockerfile +++ b/alpine-python/Dockerfile @@ -1,5 +1,5 @@ ARG ARCH -FROM harbor.colben.cn/general/alpine$ARCH +FROM harbor.colben.cn/general/alpine$ARCH:3.20 MAINTAINER Colben colbenlee@gmail.com RUN apk update \ && apk add --no-cache linux-headers libc-dev gcc python3 python3-dev py3-pip \ diff --git a/alpine-3.12/Dockerfile b/alpine/Dockerfile-3.12 similarity index 100% rename from alpine-3.12/Dockerfile rename to alpine/Dockerfile-3.12 diff --git a/alpine-3.15/Dockerfile b/alpine/Dockerfile-3.15 similarity index 100% rename from alpine-3.15/Dockerfile rename to alpine/Dockerfile-3.15 diff --git a/alpine/Dockerfile-3.17 b/alpine/Dockerfile-3.17 new file mode 100644 index 0000000..e666628 --- /dev/null +++ b/alpine/Dockerfile-3.17 @@ -0,0 +1,14 @@ +FROM alpine:3.17 +MAINTAINER Colben colbenlee@gmail.com +ADD --chown=root:root /ADD/ /etc/ +RUN echo -e 'https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.17/main\n\ +https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.17/community\n\ +' > /etc/apk/repositories \ + && apk update \ + && apk add --no-cache bash curl coreutils iproute2 \ + && echo "alias ls='ls --color=auto'" >> /root/.bashrc \ + && rm -rf /var/cache/apk/* +ENV PS1='\[\e[33;1;1m\][\[\e[0m\]\[\e[35;1m\]\u\[\e[0m\]\[\e[33;1;1m\]@\[\e[0m\]\[\e[31;1;1m\]docker\[\e[0m\]\[\e[32;1;1m\](\h)\[\e[0m\]\[\e[33;1;1m\]:\[\e[0m\]\[\e[32m\]\w\[\e[0m\]\[\e[33;1;1m\]]\[\e[0m\]\[\e[36m\]\$\[\e[0m\] ' +ENV PS2='\[\e[36m\]>\[\e[0m\] ' +ENV LANG=en_US.UTF-8 + diff --git a/alpine/Dockerfile b/alpine/Dockerfile-3.20 similarity index 100% rename from alpine/Dockerfile rename to alpine/Dockerfile-3.20 diff --git a/alpine/alpine.sh b/alpine/alpine.sh index 7cd2344..2ff4781 100755 --- a/alpine/alpine.sh +++ b/alpine/alpine.sh @@ -9,7 +9,8 @@ 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:latest" +TAG=$1 +IMAGE="harbor.colben.cn/general/$(basename ${0%.sh})$ARCH:$TAG" if [ -t 0 ]; then function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } @@ -53,7 +54,7 @@ function Build { && Warn Removing image $IMAGE ... \ && docker rmi $IMAGE Warn Building image: $IMAGE ... - docker build --force-rm -t $IMAGE . + docker build --force-rm -t $IMAGE -f Dockerfile-$TAG . YesOrNo Push image: $IMAGE? && docker push $IMAGE } diff --git a/cloudreve/ADD/ccmd b/cloudreve/ADD/ccmd index f49b42c..90c1649 100755 --- a/cloudreve/ADD/ccmd +++ b/cloudreve/ADD/ccmd @@ -12,8 +12,10 @@ trap Quit EXIT PIDS= GOT_SIGTERM= -LOG_DIR='/var/log/cloudreve' -DATA_DIR='/var/lib/cloudreve' +LOG_DIR=/var/log/cloudreve +DATA_DIR=/var/lib/cloudreve +SOCK_FILE=/sock/cloudreve +CONF_FILE=$DATA_DIR/cloudreve.ini function Print { local file=/dev/null @@ -32,9 +34,8 @@ function Quit { } function ModifyConf { - [ -e $DATA_DIR/cloudreve.ini ] && return 0 - Print Generating cloudreve.ini ... - cat > $DATA_DIR/cloudreve.ini <<-EOF + Print Generating $CONF_FILE ... + cat > $CONF_FILE <<-EOF [System] Debug = false Mode = master @@ -43,7 +44,8 @@ SessionSecret = $(date +%F | sha256sum | cut -c -64) HashIDSalt = $(date +%T | sha256sum | cut -c -64) #[UnixSocket] -#Listen = /socket/cloudreve +#Listen = $SOCK_FILE +#Perm = 0666 [Database] DBFile = $DATA_DIR/cloudreve.db @@ -71,15 +73,17 @@ EOF function StartProc { Print Starting cloudreve ... - rm -f /socket/cloudreve - /opt/cloudreve -c $DATA_DIR/cloudreve.ini &>> $LOG_DIR/cloudreve.out & + cd $DATA_DIR + /opt/cloudreve -c cloudreve.ini &>> $LOG_DIR/cloudreve.out & PIDS="$PIDS $!" + sleep 8 + [ -e $SOCK_FILE ] && chmod 0666 $SOCK_FILE Print Cloudreve started. } function Main { local pid= - ModifyConf + [ -e $CONF_FILE ] || ModifyConf StartProc trap "GOT_SIGTERM=1; Print Got SIGTERM ..." SIGTERM while [ -z "$GOT_SIGTERM" ] && sleep 2; do diff --git a/cloudreve/Demo/SingleNode/docker-compose.yml b/cloudreve/Demo/SingleNode/docker-compose.yml index 2c403b2..8f0fe6d 100644 --- a/cloudreve/Demo/SingleNode/docker-compose.yml +++ b/cloudreve/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: rsync: - image: harbor.colben.cn/general/cloudreve + image: harbor.boyachain.cn:20443/general/cloudreve container_name: cloudreve restart: "on-failure" stop_grace_period: 1m diff --git a/cloudreve/Dockerfile b/cloudreve/Dockerfile index ada0d50..ac901e2 100644 --- a/cloudreve/Dockerfile +++ b/cloudreve/Dockerfile @@ -2,6 +2,7 @@ ARG ARCH FROM harbor.colben.cn/general/photon$ARCH:4 MAINTAINER Colben colbenlee@gmail.com ADD --chown=root:root /ADD/ /opt/ -RUN mkdir -p /var/{log,lib}/cloudreve +RUN mkdir -p /var/{log,lib}/cloudreve /sock +ENV GIN_MODE=release CMD ["/opt/ccmd"] diff --git a/cloudreve/cloudreve.sh b/cloudreve/cloudreve.sh index 386b137..80ffac3 100755 --- a/cloudreve/cloudreve.sh +++ b/cloudreve/cloudreve.sh @@ -43,13 +43,6 @@ function YesOrNo { function Update { Warn Preparing cloudreve ... cd $ROOT_DIR/ADD - if [ -z "$ARCH" ]; then - tar zxf $(ls /release/RUNTIME/cloudreve_*_linux_amd64.tar.gz|tail -1) - elif [ 'aarch64' == "$ARCH" ]; then - tar zxf $(ls /release/RUNTIME/cloudreve_*_linux_arm64.tar.gz|tail -1) - else - Error Not supported arch: $ARCH! - fi chmod 0755 cloudreve } diff --git a/datax/Demo/MultiProc/docker-compose.yml b/datax/Demo/MultiProc/docker-compose.yml index 265b9c3..fe07ad7 100644 --- a/datax/Demo/MultiProc/docker-compose.yml +++ b/datax/Demo/MultiProc/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: datax1: - image: harbor.colben.cn/general/datax + image: harbor.boyachain.cn:20443/general/datax container_name: datax1 restart: "no" stop_grace_period: 1m @@ -22,7 +22,7 @@ services: target: /opt/datax/log_perf datax2: - image: harbor.colben.cn/general/datax + image: harbor.boyachain.cn:20443/general/datax container_name: datax2 restart: "no" stop_grace_period: 1m diff --git a/datax/Demo/SingleProc/docker-compose.yml b/datax/Demo/SingleProc/docker-compose.yml index 8ef0296..7b859fc 100644 --- a/datax/Demo/SingleProc/docker-compose.yml +++ b/datax/Demo/SingleProc/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: datax: - image: harbor.colben.cn/general/datax + image: harbor.boyachain.cn:20443/general/datax container_name: datax restart: "no" stop_grace_period: 1m diff --git a/elasticsearch6/Demo/SingleNode/docker-compose.yml b/elasticsearch6/Demo/SingleNode/docker-compose.yml index f220f46..1f5b6fc 100644 --- a/elasticsearch6/Demo/SingleNode/docker-compose.yml +++ b/elasticsearch6/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: es: - image: harbor.colben.cn/general/elasticsearch:6 + image: harbor.boyachain.cn:20443/general/elasticsearch:6 container_name: es restart: "on-failure" stop_grace_period: 5m diff --git a/elasticsearch6/Demo/ThreeNodes/docker-compose.yml b/elasticsearch6/Demo/ThreeNodes/docker-compose.yml index 7e0227d..2fc09a6 100644 --- a/elasticsearch6/Demo/ThreeNodes/docker-compose.yml +++ b/elasticsearch6/Demo/ThreeNodes/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: es1: - image: harbor.colben.cn/general/elasticsearch:6 + image: harbor.boyachain.cn:20443/general/elasticsearch:6 container_name: es1 restart: "on-failure" stop_grace_period: 5m @@ -37,7 +37,7 @@ services: target: /opt/es/offline-plugins es2: - image: harbor.colben.cn/general/elasticsearch:6 + image: harbor.boyachain.cn:20443/general/elasticsearch:6 container_name: es2 restart: "on-failure" stop_grace_period: 5m @@ -72,7 +72,7 @@ services: target: /opt/es/offline-plugins es3: - image: harbor.colben.cn/general/elasticsearch:6 + image: harbor.boyachain.cn:20443/general/elasticsearch:6 container_name: es3 restart: "on-failure" stop_grace_period: 5m diff --git a/elasticsearch7/Demo/MultiRoles/docker-compose.yml b/elasticsearch7/Demo/MultiRoles/docker-compose.yml index 0aad3de..9df58c7 100644 --- a/elasticsearch7/Demo/MultiRoles/docker-compose.yml +++ b/elasticsearch7/Demo/MultiRoles/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: es-master1: - image: harbor.colben.cn/general/elasticsearch:7 + image: harbor.boyachain.cn:20443/general/elasticsearch:7 container_name: es-master1 restart: "on-failure" stop_grace_period: 5m @@ -48,7 +48,7 @@ services: target: /opt/es/offline-plugins es-master2: - image: harbor.colben.cn/general/elasticsearch:7 + image: harbor.boyachain.cn:20443/general/elasticsearch:7 container_name: es-master2 restart: "on-failure" stop_grace_period: 5m @@ -93,7 +93,7 @@ services: target: /opt/es/offline-plugins es-data1: - image: harbor.colben.cn/general/elasticsearch:7 + image: harbor.boyachain.cn:20443/general/elasticsearch:7 container_name: es-data1 restart: "on-failure" stop_grace_period: 5m @@ -138,7 +138,7 @@ services: target: /opt/es/offline-plugins es-data2: - image: harbor.colben.cn/general/elasticsearch:7 + image: harbor.boyachain.cn:20443/general/elasticsearch:7 container_name: es-data2 restart: "on-failure" stop_grace_period: 5m @@ -183,7 +183,7 @@ services: target: /opt/es/offline-plugins es-data3: - image: harbor.colben.cn/general/elasticsearch:7 + image: harbor.boyachain.cn:20443/general/elasticsearch:7 container_name: es-data3 restart: "on-failure" stop_grace_period: 5m diff --git a/elasticsearch7/Demo/SingleNode/docker-compose.yml b/elasticsearch7/Demo/SingleNode/docker-compose.yml index acd642e..eb316ab 100644 --- a/elasticsearch7/Demo/SingleNode/docker-compose.yml +++ b/elasticsearch7/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: es: - image: harbor.colben.cn/general/elasticsearch:7 + image: harbor.boyachain.cn:20443/general/elasticsearch:7 container_name: es restart: "on-failure" stop_grace_period: 5m diff --git a/elasticsearch7/Demo/ThreeNodes/docker-compose.yml b/elasticsearch7/Demo/ThreeNodes/docker-compose.yml index eefe9ed..924f9c2 100644 --- a/elasticsearch7/Demo/ThreeNodes/docker-compose.yml +++ b/elasticsearch7/Demo/ThreeNodes/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: es1: - image: harbor.colben.cn/general/elasticsearch:7 + image: harbor.boyachain.cn:20443/general/elasticsearch:7 container_name: es1 restart: "on-failure" stop_grace_period: 5m @@ -47,7 +47,7 @@ services: target: /opt/es/offline-plugins es2: - image: harbor.colben.cn/general/elasticsearch:7 + image: harbor.boyachain.cn:20443/general/elasticsearch:7 container_name: es2 restart: "on-failure" stop_grace_period: 5m @@ -91,7 +91,7 @@ services: target: /opt/es/offline-plugins es3: - image: harbor.colben.cn/general/elasticsearch:7 + image: harbor.boyachain.cn:20443/general/elasticsearch:7 container_name: es3 restart: "on-failure" stop_grace_period: 5m diff --git a/gitea/Demo/GiteaWithNginx/docker-compose.yml b/gitea/Demo/GiteaWithNginx/docker-compose.yml index e1188c3..266ffde 100644 --- a/gitea/Demo/GiteaWithNginx/docker-compose.yml +++ b/gitea/Demo/GiteaWithNginx/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: gitea: - image: harbor.colben.cn/general/gitea + image: harbor.boyachain.cn:20443/general/gitea container_name: gitea restart: on-failure stop_grace_period: 1m @@ -23,7 +23,7 @@ services: target: /socket nginx: - image: harbor.colben.cn/general/nginx + image: harbor.boyachain.cn:20443/general/nginx container_name: nginx restart: on-failure stop_grace_period: 1m diff --git a/gitea/Demo/SingleNode/docker-compose.yml b/gitea/Demo/SingleNode/docker-compose.yml index 86720b6..9c9f543 100644 --- a/gitea/Demo/SingleNode/docker-compose.yml +++ b/gitea/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: gitea: - image: harbor.colben.cn/general/gitea + image: harbor.boyachain.cn:20443/general/gitea container_name: gitea restart: "on-failure" stop_grace_period: 1m diff --git a/gitea/gitea.sh b/gitea/gitea.sh index fb6533f..241ffda 100755 --- a/gitea/gitea.sh +++ b/gitea/gitea.sh @@ -9,8 +9,7 @@ export LANG=en_US.UTF-8 [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" -VERSION=$1 -IMAGE="harbor.colben.cn/general/$(basename ${0%.sh})$ARCH:$VERSION" +IMAGE="harbor.colben.cn/general/$(basename ${0%.sh})$ARCH:latest" if [ -t 0 ]; then function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } @@ -43,7 +42,6 @@ function YesOrNo { function Update { cd $ROOT_DIR - cp -f ADD/gitea-$VERSION ADD/gitea chmod 0755 ADD/gitea } diff --git a/greatsql/ADD/ccmd b/greatsql/ADD/ccmd index d3c02b8..ecb5abe 100755 --- a/greatsql/ADD/ccmd +++ b/greatsql/ADD/ccmd @@ -31,10 +31,10 @@ function Print { } function Quit { - Print killing greatsql ... + Print killing greatsqld ... greatsqladmin shutdown || true while :; do - pkill -f greatsqld && Print killing greatsql ... || break + pkill -f greatsqld && Print killing greatsqld ... || break sleep 1 done Print Container stopped. @@ -57,20 +57,35 @@ function Init { } function ImportInitSql { - local sql_file= sql_files= - mysql -e "CREATE USER docker@localhost IDENTIFIED BY 'China_19\$(10)!'" - mysql -e "GRANT SHUTDOWN ON *.* TO docker@localhost" + local sql_file= + local sql_files= + greatsql -e "CREATE USER docker@localhost IDENTIFIED BY 'China_19\$(10)!'" + greatsql -e "GRANT RELOAD,SHUTDOWN ON *.* TO docker@localhost" if sql_files="$(ls $LOG_DIR/init_sql/*.sql 2>/dev/null)"; then Print Importing the sql files ... for sql_file in $sql_files; do Print Importing $sql_file ... - mysql < $sql_file + greatsql < $sql_file done Print Imported all sql files successfully. fi } +function SideCar { + local day= + local last_day=$(date +%d) + while sleep 8; do + day=$(date +%d) \ + && [ "$day" != "$last_day" ] \ + && last_day=$day \ + && find $LOG_DIR -type f -name "*.log" \ + | xargs -I ^ mv -f ^ ^.$(date +%F -d yesterday) \ + && greatsqladmin flush-logs + done +} + function StartProc { + Print Starting greatsql ... greatsqld & PIDS="$PIDS $!" while sleep 1; do @@ -79,12 +94,13 @@ function StartProc { done echo [ -z "$INIT_FLAG" ] || ImportInitSql + SideCar & + PIDS="$PIDS $!" Print GreatSQL is ready for connections. } function Main { local pid= - Print Starting greatsql ... Init StartProc trap "GOT_SIGTERM=1; Print Got SIGTERM ..." SIGTERM diff --git a/greatsql/Dockerfile-greatsql8 b/greatsql/Dockerfile-8 similarity index 88% rename from greatsql/Dockerfile-greatsql8 rename to greatsql/Dockerfile-8 index 72c4883..f061da7 100644 --- a/greatsql/Dockerfile-greatsql8 +++ b/greatsql/Dockerfile-8 @@ -3,27 +3,14 @@ FROM harbor.colben.cn/general/rocky$ARCH:8 MAINTAINER Colben colbenlee@gmail.com ARG BUNDLE_FILE ADD --chown=root:root /ADD/ /opt/ -RUN echo -e 'fs.file-max = 1000000\n\ -net.core.somaxconn = 32768\n\ -net.ipv4.tcp_syncookies = 0\n\ -vm.overcommit_memory = 1\n\ -' >> /etc/sysctl.conf \ - && echo -e '\n\ -mysql soft nofile 65535\n\ -mysql hard nofile 65535\n\ -mysql soft stack 32768\n\ -mysql hard stack 32768\n\ -mysql soft nproc 65535\n\ -mysql hard nproc 65535\n\ -' >> /etc/security/limits.conf \ - && echo -e '[epel]\n\ +RUN echo -e '[epel]\n\ name=Extra Packages for Enterprise Linux $releasever - $basearch\n\ baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$basearch\n\ enabled=1\n\ gpgcheck=0\n\ ' > /etc/yum.repos.d/epel.repo \ - && dnf makecache \ - && dnf -y install xz pkg-config perl libaio-devel numactl-devel numactl-libs net-tools openssl openssl-devel jemalloc jemalloc-devel perl-Data-Dumper perl-Digest-MD5 python2 perl-JSON perl-Test-Simple \ + && microdnf makecache \ + && microdnf install xz pkg-config perl libaio-devel numactl-devel numactl-libs net-tools openssl openssl-devel jemalloc jemalloc-devel perl-Data-Dumper perl-Digest-MD5 python2 perl-JSON perl-Test-Simple \ && curl -LO http://10.11.0.1:10080/$BUNDLE_FILE \ && tar xf $BUNDLE_FILE -C /tmp/ \ && rm -f /tmp/greatsql-devel* /tmp/greatsql-mysql-router-* \ @@ -33,7 +20,7 @@ gpgcheck=0\n\ && ln -s /usr/bin/mysqldump /usr/bin/greatsqldump \ && ln -s /usr/bin/mysqladmin /usr/bin/greatsqladmin \ && rm -rf /usr/sbin/mysqld-debug \ - /var/cache/dnf \ + /var/cache/yum \ /var/lib/dnf \ /var/log/* \ /etc/my.cnf.d \ @@ -99,6 +86,19 @@ lower-case-table-names = 1\n\ [mysqladmin]\n\ user = docker\n\ password = China_19$(10)!\n\ -' > /etc/mysql/my.cnf +' > /etc/mysql/my.cnf \ + && echo -e 'fs.file-max = 1000000\n\ +net.core.somaxconn = 32768\n\ +net.ipv4.tcp_syncookies = 0\n\ +vm.overcommit_memory = 1\n\ +' >> /etc/sysctl.conf \ + && echo -e '\n\ +mysql soft nofile 65535\n\ +mysql hard nofile 65535\n\ +mysql soft stack 32768\n\ +mysql hard stack 32768\n\ +mysql soft nproc 65535\n\ +mysql hard nproc 65535\n\ +' >> /etc/security/limits.conf CMD ["/opt/ccmd"] diff --git a/greatsql/greatsql8.sh b/greatsql/greatsql.sh similarity index 84% rename from greatsql/greatsql8.sh rename to greatsql/greatsql.sh index 4d08b3c..8767128 100755 --- a/greatsql/greatsql8.sh +++ b/greatsql/greatsql.sh @@ -9,7 +9,8 @@ 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/greatsql$ARCH:8" +TAG=$1 +IMAGE="harbor.colben.cn/general/greatsql$ARCH:$TAG" BUNDLE_FILE= if [ -t 0 ]; then @@ -24,7 +25,7 @@ fi function Quit { local exitCode=$? - pkill -f '^python2 -m SimpleHTTPServer 10080$' || true + pkill -f '^python -m http.server 10080' || true [ 0 -ne $exitCode ] && Error Failed to build or push image! [ -z "${END:-}" ] && echo && Error Interrupted manually! Print Succeeded to build and push image. @@ -46,14 +47,14 @@ function Update { Warn Check files ... cd /release/RUNTIME if [ -z "$ARCH" ]; then - BUNDLE_FILE=greatsql-8.0.32-26.1.el8.amd64.rpm-bundle.tar.xz + BUNDLE_FILE=greatsql-8.0.32-27.1.el8.amd64.rpm-bundle.tar.xz elif [ '-aarch64' == "$ARCH" ]; then - BUNDLE_FILE=greatsql-8.0.32-26.1.el8.arm64.rpm-bundle.tar.xz + BUNDLE_FILE=greatsql-8.0.32-27.1.el8.arm64.rpm-bundle.tar.xz else Error Unknown arch: $ARCH! fi [ -e $BUNDLE_FILE ] || Error Not found $BUNDLE_FILE! - python2 -m SimpleHTTPServer 10080 &>/dev/null & + /usr/libexec/platform-python -m http.server 10080 &>/dev/null & } function Build { @@ -63,7 +64,7 @@ function Build { && Warn Removing image $IMAGE ... \ && docker rmi $IMAGE Warn Building image: $IMAGE ... - docker build --force-rm --build-arg ARCH="$ARCH" --build-arg BUNDLE_FILE="$BUNDLE_FILE" -t $IMAGE -f Dockerfile-greatsql8 . + docker build --force-rm --build-arg ARCH="$ARCH" --build-arg BUNDLE_FILE="$BUNDLE_FILE" -t $IMAGE -f Dockerfile-$TAG . YesOrNo Push image: $IMAGE? && docker push $IMAGE } diff --git a/jdk/Dockerfile b/jdk/Dockerfile index ae8663e..d92242c 100644 --- a/jdk/Dockerfile +++ b/jdk/Dockerfile @@ -1,7 +1,11 @@ ARG ARCH -FROM harbor.colben.cn/general/photon$ARCH +FROM harbor.colben.cn/general/photon$ARCH:4 MAINTAINER Colben colbenlee@gmail.com ADD --chown=root:root /ADD/ /opt/ +RUN tdnf makecache \ + && tdnf -y install fontconfig dejavu-fonts \ + && fc-cache -fv \ + && rm -rf /var/cache/tdnf ENV JAVA_HOME=/opt/jdk ENV JRE_HOME=${JAVA_HOME}/jre ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib diff --git a/kafka/ADD/ccmd b/kafka/ADD-2/ccmd similarity index 100% rename from kafka/ADD/ccmd rename to kafka/ADD-2/ccmd diff --git a/kafka/ADD-4/ccmd b/kafka/ADD-4/ccmd new file mode 100755 index 0000000..ea45503 --- /dev/null +++ b/kafka/ADD-4/ccmd @@ -0,0 +1,109 @@ +#!/bin/bash + +################################################## +# Mount dir # +# - /opt/kafka/data # +# - /opt/kafka/logs # +# ENV # +# - CONF # +# - CLUSTER_ID # +# - LEAD_CONTROLLER # +# - KAFKA_HEAP_OPTS # +# - EXTRA_ARGS # +# - _CONF_* # +################################################## + +set -euo pipefail +export LANG=en_US.UTF-8 +trap Quit EXIT + +PIDS= +GOT_SIGTERM= +CONF=${CONF:?} +CONF_FILE=config/$CONF.properties +CLUSTER_ID=${CLUSTER_ID:?} +LEAD_CONTROLLER=${LEAD_CONTROLLER:-} + +function Print { + local file=/dev/null + [ '-f' = "$1" ] && file=$2 && shift && shift + date +"[%F %T] $*" | tee -a $file +} + +function Quit { + while :; do + pkill -f java && Print killing java ... || break + sleep 1 + done + Print Container stopped. + test -n "$GOT_SIGTERM" +} + +function Usage { + Print 'This container should run with + **root user** + **/opt/kafka/{data,logs} mounted from host** + ' +} + +function ModifyConf { + local kv= + ! cp -f $CONF_FILE.origin $CONF_FILE \ + && Print Skipped modifying $CONF_FILE ... \ + && return 0 + Print Modifying $CONF_FILE ... + echo -e "\n#### Docker" >> $CONF_FILE + while read kv; do + [ -z "$kv" ] && break + Print Modifying property: ${kv%%=*} ... + sed -i "/^${kv%%=*} *=/d" $CONF_FILE + echo "$kv" >> $CONF_FILE + done <<< "$(env | grep '^_CONF_' | sed 's/_CONF_//')" +} + +function StartProc { + [[ ! "$CONF" =~ ^broker|controller|server$ ]] \ + && Print Unknown conf: $CONF! \ + && exit 1 + Print Formatting storage ... + if [ -z "$LEAD_CONTROLLER" -a 'broker' != "$CONF" ]; then + kafka-storage.sh format -g -t $CLUSTER_ID -c $CONF_FILE -s + else + kafka-storage.sh format -g -t $CLUSTER_ID -c $CONF_FILE -N + fi + Print Starting kafka ... + kafka-server-start.sh $CONF_FILE &>> logs/kafka.out & + PIDS="$PIDS $!" + Print Kafka started. + [ -e data/$CONF.lock ] && return 0 + [ -z "$LEAD_CONTROLLER" -o 'broker' == "$CONF" ] \ + && touch data/$CONF.lock \ + && return 0 + Print Join in kraft cluster with $LEAD_CONTROLLER after 10s ... + sleep 10 + [ ! -e /proc/$! ] && Print Unexpected error! && exit + timeout 10 kafka-metadata-quorum.sh --command-config $CONF_FILE \ + --bootstrap-controller $LEAD_CONTROLLER add-controller \ + && touch data/$CONF.lock \ + && return 0 + Print Failed to join cluster with $LEAD_CONTROLLER! + exit 1 +} + +function Main { + local pid= + cd /opt/kafka + Usage + ModifyConf + StartProc + trap "GOT_SIGTERM=1; Print Got SIGTERM ..." SIGTERM + while [ -z "$GOT_SIGTERM" ] && sleep 2; do + for pid in $PIDS; do + [ ! -e /proc/$pid ] && Print Unexpected error! && exit + done + done +} + +# Start here +Main + diff --git a/kafka/Demo/MultiNodes/README.md b/kafka/Demo/MultiNodes/README.md new file mode 100644 index 0000000..534080f --- /dev/null +++ b/kafka/Demo/MultiNodes/README.md @@ -0,0 +1,31 @@ +# 部署 kafka 集群 + +- 根据实际环境修改 docker-compose.yml + * CONF: 这里启动三个 controller 节点和两个 brocker 节点,可用于线上 + * CLUSTER_ID: 这里要替换成完全一样的 uuid,生成命令 + ``` + docker run --rm harbor.boyachain.cn:20443/general/kafka:4.0 kafka-storage.sh random-uuid + ``` + * LEAD_CONTROLLER: 指定 bootstrap kraft 集群的节点 **controller 地址**,bootstrap kraft 集群的**第一个节点不能设置该变量**,broker 节点无需设置该变量 + +- 创建目录 + ``` + grep '\ ${0%.sh}.out - 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; } + #exec &> /var/log/$(basename ${0%.sh}).out + 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; } + function ErrorOnly { echo -e "$(date +'[%F %T ERROR]') $*"; } fi function Quit { @@ -35,107 +36,70 @@ function Quit { sleep 30 } -function GetSignature { - local sha1Str=$(echo -n "GET$1" | openssl dgst -sha1 -hmac "$SECRET_KEY" -binary) - echo -n "$sha1Str" | base64 | sed -e 's/=/%3D/g' -e 's/+/%2B/g' +function GetTxtRecord { + local record="txt record: $SUB_DOMAIN.$DOMAIN" + local err= + local resp= + Warn Getting $record ... + resp=$(tccli dnspod DescribeRecordList \ + --Domain $DOMAIN \ + --Subdomain $SUB_DOMAIN \ + --RecordType TXT) || err=$? + [ '255' == "$err" ] \ + && Warn Not found $record! \ + && return 0 + [ -n "$err" ] \ + && echo "$resp" \ + && ErrorOnly Failed to get $record! \ + && return $err + RECORD_ID=$(echo $resp | jq -rM ".RecordList[0].RecordId") } -function ListRecord { - Warn Get request url ... - local sign= - local resp= - local url='cns.api.qcloud.com/v2/index.php' - url="${url}?Action=RecordList" - url="${url}&Nonce=$RANDOM" - url="${url}&SecretId=$SECRET_ID" - url="${url}&Timestamp=$(date +%s)" - url="${url}&Version=2018-08-08" - url="${url}&domain=$DOMAIN" - sign=$(GetSignature "$url") - Warn List record ... - resp=$(curl -sSL -XGET "https://$url&Signature=$sign" | jq -eM .) - [ '0' != "$(echo $resp | jq -crM .code)" ] && echo "$resp" && exit 1 - RECORD_ID=$(echo $resp | jq -crM ".data.records[] | select(.name == \"$SUB_DOMAIN\") | .id") +function CreateTxtRecord { + local record="txt record: $SUB_DOMAIN.$DOMAIN" + Warn Creating $record ... + tccli dnspod CreateTXTRecord \ + --Domain $DOMAIN \ + --SubDomain $SUB_DOMAIN \ + --RecordLine '默认' \ + --Value $RECORD_VA \ + && Print Succeeded to create $record. \ + && return 0 + ErrorOnly Failed to create $record! } -function CreateRecord { - Warn Get request url ... - local sign= - local resp= - local url='cns.api.qcloud.com/v2/index.php' - url="${url}?Action=RecordCreate" - url="${url}&Nonce=$RANDOM" - url="${url}&SecretId=$SECRET_ID" - url="${url}&Timestamp=$(date +%s)" - url="${url}&Version=2018-08-08" - url="${url}&domain=$DOMAIN" - url="${url}&recordLine=默认" - url="${url}&recordType=TXT" - url="${url}&subDomain=$SUB_DOMAIN" - url="${url}&value=$RECORD_VA" - sign=$(GetSignature "$url") - Warn Create sub_domain: $SUB_DOMAIN with value: $RECORD_VA ... - resp=$(curl -sSL -XGET "https://$url&Signature=$sign" | jq -eM .) - [ '0' != "$(echo $resp | jq -crM .code)" ] && echo "$resp" && exit 1 - return 0 -} - -function ModifyRecord { - Warn Get request url ... - local sign= - local resp= - local url='cns.api.qcloud.com/v2/index.php' - url="${url}?Action=RecordModify" - url="${url}&Nonce=$RANDOM" - url="${url}&SecretId=$SECRET_ID" - url="${url}&Timestamp=$(date +%s)" - url="${url}&Version=2018-08-08" - url="${url}&domain=$CERTBOT_DOMAIN" - url="${url}&recordId=$RECORD_ID" - url="${url}&recordLine=默认" - url="${url}&recordType=TXT" - url="${url}&subDomain=$SUB_DOMAIN" - url="${url}&value=$RECORD_VA" - sign=$(GetSignature "$url") - Warn Modify record: $RECORD_ID with value: $RECORD_VA ... - resp=$(curl -sSL -XGET "https://$url&Signature=$sign" | jq -eM .) - [ '0' != "$(echo $resp | jq -crM .code)" ] && echo "$resp" && exit 1 - return 0 +function ModifyTxtRecord { + local record="txt record: $SUB_DOMAIN.$DOMAIN" + Warn Modifying $record ... + tccli dnspod ModifyTXTRecord \ + --Domain $DOMAIN \ + --SubDomain $SUB_DOMAIN \ + --RecordId $RECORD_ID \ + --RecordLine '默认' \ + --Value $RECORD_VA \ + && Print Succeeded to modify $record. \ + && return 0 + ErrorOnly Failed to modify $record! } function DeleteRecord { - Warn Get request url ... - local sign= - local resp= - local url='cns.api.qcloud.com/v2/index.php' - url="${url}?Action=RecordDelete" - url="${url}&Nonce=$RANDOM" - url="${url}&SecretId=$SECRET_ID" - url="${url}&Timestamp=$(date +%s)" - url="${url}&Version=2018-08-08" - url="${url}&domain=$DOMAIN" - url="${url}&recordId=$RECORD_ID" - sign=$(GetSignature "$url") - Warn Delete record $RECORD_ID ... - resp=$(curl -sSL -XGET "https://$url&Signature=$sign" | jq -eM .) - [ '0' != "$(echo $resp | jq -crM .code)" ] && echo "$resp" && exit 1 - return 0 + local record="record: $SUB_DOMAIN.$DOMAIN" + Warn Deleting $record ... + tccli dnspod DeleteRecord \ + --Domain $DOMAIN \ + --RecordId $RECORD_ID \ + && Print Succeeded to delete $record. \ + && return 0 + ErrorOnly Failed to delete $record! } function Main { - [ -e "$PID_FILE" ] && Error Pid file $PID_FILE already exists, quit! - echo $$ > $PID_FILE - for _ in {1..5}; do - ListRecord || continue - if [ -z "$RECORD_ID" ]; then - CreateRecord || continue - else - ModifyRecord || continue - fi - END=1 - return 0 - done - return 1 + trap Quit EXIT + GetTxtRecord + [ -z "$RECORD_ID" ] && CreateTxtRecord + [ -z "$RECORD_ID" ] || ModifyTxtRecord + END=1 + return 0 } # Start here diff --git a/letsencrypt/Dockerfile b/letsencrypt/Dockerfile index f4ae595..41f1b02 100644 --- a/letsencrypt/Dockerfile +++ b/letsencrypt/Dockerfile @@ -1,10 +1,19 @@ ARG ARCH -FROM harbor.colben.cn/general/alpine$ARCH +FROM harbor.colben.cn/general/alpine-python$ARCH:latest MAINTAINER Colben colbenlee@gmail.com +ARG ALI ADD --chown=root:root /ADD/ /opt/ RUN apk update \ - && apk add --no-cache certbot openssl jq \ + && apk add --no-cache certbot openssl jq bind-tools \ && mkdir -p /etc/letsencrypt /var/log/letsencrypt \ - && rm -rf /var/cache/apk/* + && curl -LO https://aliyuncli.alicdn.com/$ALI \ + && tar zxf $ALI \ + && mv aliyun /usr/bin/ \ + && pip3 install \ + -i https://pypi.tuna.tsinghua.edu.cn/simple \ + --trusted-host pypi.tuna.tsinghua.edu.cn \ + --break-system-packages \ + tccli \ + && rm -rf $ALI /root/.cache/pip /var/cache/apk/* CMD ["/opt/ccmd"] diff --git a/letsencrypt/letsencrypt.sh b/letsencrypt/letsencrypt.sh index 7c036fd..882ab2e 100755 --- a/letsencrypt/letsencrypt.sh +++ b/letsencrypt/letsencrypt.sh @@ -10,6 +10,7 @@ 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:latest" +ALI= if [ -t 0 ]; then function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } @@ -41,7 +42,7 @@ function YesOrNo { } function Update { - : + [ -z "$ARCH" ] && ALI=aliyun-cli-linux-latest-amd64.tgz || ALI=aliyun-cli-linux-latest-arm64.tgz } function Build { @@ -51,7 +52,7 @@ function Build { && Warn Removing image $IMAGE ... \ && docker rmi $IMAGE Warn Building image: $IMAGE ... - docker build --force-rm --build-arg ARCH="$ARCH" -t $IMAGE . + docker build --force-rm --build-arg ARCH="$ARCH" --build-arg ALI="$ALI" -t $IMAGE . YesOrNo Push image: $IMAGE? && docker push $IMAGE } diff --git a/logstash6/Demo/SingleNode/docker-compose.yml b/logstash6/Demo/SingleNode/docker-compose.yml index f540829..b7386ca 100644 --- a/logstash6/Demo/SingleNode/docker-compose.yml +++ b/logstash6/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: logstash: - image: harbor.colben.cn/general/logstash:6 + image: harbor.boyachain.cn:20443/general/logstash:6 container_name: logstash restart: "on-failure" stop_grace_period: 2m diff --git a/mariadb/ADD/ccmd b/mariadb/ADD/ccmd index 141c596..feb3be4 100755 --- a/mariadb/ADD/ccmd +++ b/mariadb/ADD/ccmd @@ -18,9 +18,9 @@ GOT_SIGTERM= LOG_DIR='/var/log/mysql' DATA_DIR='/var/lib/mysql' BINLOG_DIR='/var/lib/mysql-bin' -INIT_FLAG=${INIT_FLAG:-} SOCK_FILE='/run/mysqld/mysqld.sock' PID_FILE='/run/mysqld/mysqld.pid' +INIT_FLAG= function Print { local file=/dev/null @@ -30,7 +30,7 @@ function Print { function Quit { Print killing mysqld ... - mysqladmin shutdown --wait-for-all-slaves || true + mysqladmin shutdown || true while :; do pkill -f mysqld && Print killing mysqld ... || break sleep 1 @@ -49,9 +49,37 @@ function Init { fi } -function StartProc { +function ImportInitSql { local sql_file= local sql_files= + Print Securing database ... + mysql_secure_installation <<< "$(echo -e '\nn\nn\n\n\n\n\n')" > /dev/null + mysql -e "CREATE USER docker@localhost IDENTIFIED BY 'China_19\$(10)!'" + mysql -e "GRANT RELOAD,SHUTDOWN ON *.* TO docker@localhost" + if sql_files="$(ls $LOG_DIR/init_sql/*.sql 2>/dev/null)"; then + Print Importing the sql files ... + for sql_file in $sql_files; do + Print Importing $sql_file ... + mysql < $sql_file + done + Print Imported all sql files successfully. + fi +} + +function SideCar { + local day= + local last_day=$(date +%d) + while sleep 8; do + day=$(date +%d) \ + && [ "$day" != "$last_day" ] \ + && last_day=$day \ + && find $LOG_DIR -type f -name "*.log" \ + | xargs -I ^ mv -f ^ ^.$(date +%F -d yesterday) \ + && mysqladmin flush-logs + done +} + +function StartProc { Print Starting mysql ... mysqld -u mysql & PIDS="$PIDS $!" @@ -60,20 +88,9 @@ function StartProc { [ ! -e /proc/$! ] && echo && Print unexpected error! && exit done echo - if [ -n "$INIT_FLAG" ]; then - Print Securing database ... - mysql_secure_installation <<< "$(echo -e '\nn\nn\n\n\n\n\n')" > /dev/null - mysql -e "CREATE USER docker@localhost IDENTIFIED BY 'China_19\$(10)!'" - mysql -e "GRANT SHUTDOWN ON *.* TO docker@localhost" - if sql_files="$(ls $DATA_DIR/init_sql/*.sql 2>/dev/null)"; then - Print Importing the sql files ... - for sql_file in $sql_files; do - Print Importing $sql_file ... - mysql < $sql_file - done - Print Imported all sql files successfully. - fi - fi + [ -z "$INIT_FLAG" ] || ImportInitSql + SideCar & + PIDS="$PIDS $!" Print MySQL is ready for connections. } diff --git a/mariadb/Demo/SingleNode/docker-compose.yml b/mariadb/Demo/SingleNode/docker-compose.yml index eefdd79..ffd610d 100644 --- a/mariadb/Demo/SingleNode/docker-compose.yml +++ b/mariadb/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: mariadb: - image: harbor.colben.cn/general/mariadb + image: harbor.boyachain.cn:20443/general/mariadb container_name: mariadb restart: "on-failure" stop_grace_period: 5m diff --git a/mariadb/Dockerfile b/mariadb/Dockerfile-10.6 similarity index 95% rename from mariadb/Dockerfile rename to mariadb/Dockerfile-10.6 index 9c76083..68b0492 100644 --- a/mariadb/Dockerfile +++ b/mariadb/Dockerfile-10.6 @@ -1,5 +1,5 @@ ARG ARCH -FROM harbor.colben.cn/general/alpine$ARCH +FROM harbor.colben.cn/general/alpine$ARCH:3.17 MAINTAINER Colben colbenlee@gmail.com ADD --chown=root:root /ADD/ /opt/ RUN apk update \ diff --git a/mariadb/mariadb.sh b/mariadb/mariadb.sh index 7c036fd..d3a3837 100755 --- a/mariadb/mariadb.sh +++ b/mariadb/mariadb.sh @@ -9,7 +9,8 @@ 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:latest" +TAG=$1 +IMAGE="harbor.colben.cn/general/$(basename ${0%.sh})$ARCH:$TAG" if [ -t 0 ]; then function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } @@ -51,7 +52,7 @@ function Build { && Warn Removing image $IMAGE ... \ && docker rmi $IMAGE Warn Building image: $IMAGE ... - docker build --force-rm --build-arg ARCH="$ARCH" -t $IMAGE . + docker build --force-rm --build-arg ARCH="$ARCH" -t $IMAGE -f Dockerfile-$TAG . YesOrNo Push image: $IMAGE? && docker push $IMAGE } diff --git a/mongodb/Demo/SingleNode/docker-compose.yml b/mongodb/Demo/SingleNode/docker-compose.yml index be4f2b5..7b646d0 100644 --- a/mongodb/Demo/SingleNode/docker-compose.yml +++ b/mongodb/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: mongodb: - image: harbor.colben.cn/general/mongodb + image: harbor.boyachain.cn:20443/general/mongodb container_name: mongodb restart: "on-failure" stop_grace_period: 5m diff --git a/mysql/ADD/ccmd b/mysql/ADD/ccmd index 7657f83..379c5ef 100755 --- a/mysql/ADD/ccmd +++ b/mysql/ADD/ccmd @@ -40,7 +40,7 @@ function Quit { } function Init { - rm -f ${SOCK_FILE}* ${PID_FILE} + rm -f ${SOCK_FILE}* $PID_FILE chown -R mysql:mysql $LOG_DIR $BINLOG_DIR $DATA_DIR if [ ! -d "$DATA_DIR/mysql" ]; then Print Initing mysql db files ... @@ -50,7 +50,8 @@ function Init { } function ImportInitSql { - local sql_file= sql_files= + local sql_file= + local sql_files= mysql -e "CREATE USER docker@localhost IDENTIFIED BY 'China_19\$(10)!'" mysql -e "GRANT RELOAD,SHUTDOWN ON *.* TO docker@localhost" if sql_files="$(ls $LOG_DIR/init_sql/*.sql 2>/dev/null)"; then @@ -64,7 +65,8 @@ function ImportInitSql { } function SideCar { - local day= last_day=$(date +%d) + local day= + local last_day=$(date +%d) while sleep 8; do day=$(date +%d) \ && [ "$day" != "$last_day" ] \ diff --git a/mysql/Demo/SingleNode/docker-compose.yml b/mysql/Demo/SingleNode/docker-compose.yml index ea1d5ff..bc04559 100644 --- a/mysql/Demo/SingleNode/docker-compose.yml +++ b/mysql/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: mysql: - image: harbor.colben.cn/general/mysql:8 + image: harbor.boyachain.cn:20443/general/mysql:8 container_name: mysql restart: "on-failure" stop_grace_period: 5m diff --git a/mysql/Demo/TwoMasterNodes/docker-compose.yml b/mysql/Demo/TwoMasterNodes/docker-compose.yml index 5a392ae..db09be1 100644 --- a/mysql/Demo/TwoMasterNodes/docker-compose.yml +++ b/mysql/Demo/TwoMasterNodes/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: keepalived: - image: harbor.colben.cn/general/keepalived + image: harbor.boyachain.cn:20443/general/keepalived container_name: keepalived restart: "on-failure" stop_grace_period: 1m @@ -17,7 +17,7 @@ services: target: /var/log/keepalived mysql: - image: harbor.colben.cn/general/mysql:8 + image: harbor.boyachain.cn:20443/general/mysql:8 container_name: mysql restart: "on-failure" stop_grace_period: 5m diff --git a/mysql/Dockerfile-mysql5.7 b/mysql/Dockerfile-5.7 similarity index 95% rename from mysql/Dockerfile-mysql5.7 rename to mysql/Dockerfile-5.7 index 152b75f..e0d3d77 100644 --- a/mysql/Dockerfile-mysql5.7 +++ b/mysql/Dockerfile-5.7 @@ -3,8 +3,7 @@ FROM harbor.colben.cn/general/centos$ARCH:7 MAINTAINER Colben colbenlee@gmail.com ARG ARCH ADD --chown=root:root /ADD/ /opt/ -RUN arch=${ARCH:-x86_64} \ - && echo -e "[mysql57-community]\n\ +RUN echo -e "[mysql57-community]\n\ name=MySQL 5.7 Community Server\n\ baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/\$basearch/\n\ enabled=1\n\ diff --git a/mysql/Dockerfile-mysql8 b/mysql/Dockerfile-8 similarity index 81% rename from mysql/Dockerfile-mysql8 rename to mysql/Dockerfile-8 index 460cd44..213064b 100644 --- a/mysql/Dockerfile-mysql8 +++ b/mysql/Dockerfile-8 @@ -3,18 +3,17 @@ FROM harbor.colben.cn/general/rocky$ARCH:8 MAINTAINER Colben colbenlee@gmail.com ARG ARCH ADD --chown=root:root /ADD/ /opt/ -RUN arch=${ARCH:-x86_64} \ - && echo -e "[mysql80-community]\n\ +RUN echo -e "[mysql80-community]\n\ name=MySQL 8.0 Community Server\n\ -baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/8/${arch#-}/\n\ +baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/8/\$basearch/\n\ enabled=1\n\ gpgcheck=0\n\ " > /etc/yum.repos.d/mysql-8.0.repo \ - && dnf makecache \ - && dnf -y module disable mysql \ - && dnf install mysql-community-server -y \ + && microdnf makecache \ + && microdnf module disable mysql \ + && microdnf install mysql-community-server \ && rm -rf /usr/sbin/mysqld-debug \ - /var/cache/dnf \ + /var/cache/yum \ /var/lib/dnf \ /var/log/* \ /etc/my.cnf.d \ diff --git a/mysql/mysql8.sh b/mysql/mysql.sh similarity index 95% rename from mysql/mysql8.sh rename to mysql/mysql.sh index 24b59c4..012e74e 100755 --- a/mysql/mysql8.sh +++ b/mysql/mysql.sh @@ -9,7 +9,8 @@ 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/mysql$ARCH:8" +TAG=$1 +IMAGE="harbor.colben.cn/general/mysql$ARCH:$TAG" if [ -t 0 ]; then function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } @@ -51,7 +52,7 @@ function Build { && Warn Removing image $IMAGE ... \ && docker rmi $IMAGE Warn Building image: $IMAGE ... - docker build --force-rm --build-arg ARCH="$ARCH" -t $IMAGE -f Dockerfile-mysql8 . + docker build --force-rm --build-arg ARCH="$ARCH" -t $IMAGE -f Dockerfile-$TAG . YesOrNo Push image: $IMAGE? && docker push $IMAGE } diff --git a/nginx-1.20.2/ADD/ccmd b/nginx-1.20.2/ADD/ccmd deleted file mode 100755 index 5b34cc6..0000000 --- a/nginx-1.20.2/ADD/ccmd +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/bash - -################################################## -# Mount dir # -# - /etc/nginx/stream.d # -# - /etc/nginx/http.d # -# - /var/lib/nginx/html # -# - /var/log/nginx # -# ENV # -# - GLOBAL_DIRECTIVES # -################################################## - -set -euo pipefail -export LANG=en_US.UTF-8 -trap Quit EXIT - -PIDS= -GOT_SIGTERM= -GLOBAL_DIRECTIVES="${GLOBAL_DIRECTIVES:-user nginx;worker_processes auto;}" - -function Print { - local file=/dev/null - [ '-f' = "$1" ] && file=$2 && shift && shift - date +"[%F %T] $*" | tee -a $file -} - -function Quit { - local running - Print killing nginx ... - nginx -s quit || true - while running= ; do - pkill -f sleep && running=1 && Print killing sleep ... - pkill -f nginx && running=1 && Print killing nginx ... - [ -z "$running" ] && break - sleep 1 - done - Print Container stopped. - test -n "$GOT_SIGTERM" -} - -function ChangeOwner { - Print Changing 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" \ - | xargs -I ^ md5sum ^ | md5sum) - while sleep 10; do - day=$(date +%d) \ - && [ "$day" != "$last_day" ] \ - && last_day=$day \ - && find /var/log/nginx/ -type f -name "*.log" \ - | xargs -I ^ mv -f ^ ^.$(date +%F -d yesterday) \ - && nginx -s reopen - md5=$(find /etc/nginx/ -type f -name "*.conf" | xargs -I ^ md5sum ^ \ - | md5sum) \ - && [ "$md5" != "$last_md5" ] \ - && last_md5=$md5 \ - && nginx -tq \ - && Print Reloading nginx conf ... \ - && nginx -s reload - done -} - -function StartProc { - Print Starting nginx ... - nginx -g "$GLOBAL_DIRECTIVES" & - PIDS="$PIDS $!" - Print Starting nginx sidecar ... - SideCar & - PIDS="$PIDS $!" - Print Nginx started. -} - -function Main { - local pid= - ChangeOwner - StartProc - trap "GOT_SIGTERM=1; Print Got SIGTERM ..." SIGTERM - while [ -z "$GOT_SIGTERM" ] && sleep 2; do - for pid in $PIDS; do - [ ! -e /proc/$pid ] && Print Unexpected error! && exit - done - done -} - -# Start here -Main - diff --git a/nginx-1.20.2/Demo/SingleNode/README.md b/nginx-1.20.2/Demo/SingleNode/README.md deleted file mode 100644 index b4919b0..0000000 --- a/nginx-1.20.2/Demo/SingleNode/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# 部署单节点 nginx - -- 根据实际环境修改 - - docker-compose.yml - - nginx/http.d/80.conf - -- 创建目录 - ``` - grep '\'" - interval 10 - weight 0 - fall 2 - rise 2 -} - -vrrp_instance VI_1 { - state BACKUP - virtual_router_id 14 - priority 150 # 在另一台服务器中,这里配置100 - advert_int 2 - nopreempt - interface eth0 # 这里的 eth0 是服务器的网卡名 - track_script { - chk_nginx - } - authentication { - auth_type PASS - auth_pass El_en_nginx_1234 - } - virtual_ipaddress { - 虚拟IP/掩码 dev eth0 # 这里的eth0是服务器的网卡名 - } -} - diff --git a/nginx-1.20.2/Demo/TwoNodes/nginx/http.d/80.conf b/nginx-1.20.2/Demo/TwoNodes/nginx/http.d/80.conf deleted file mode 100644 index 46b4e36..0000000 --- a/nginx-1.20.2/Demo/TwoNodes/nginx/http.d/80.conf +++ /dev/null @@ -1,5 +0,0 @@ -server { - listen 80; - location / {} -} - diff --git a/nginx-1.20.2/README.md b/nginx-1.20.2/README.md deleted file mode 100644 index c838605..0000000 --- a/nginx-1.20.2/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# 构建 nginx 镜像 - -## 定制 -- 安装 nginx -- 固定一些常用配置 -- 每 10 秒扫描一次配置文件,有变更会立即 reload - -## 外挂目录和文件 -- /etc/nginx/stream.d: nginx stream 配置文件 -- /etc/nginx/http.d: nginx http 配置文件 -- /var/lib/nginx/html: nginx 前端文件存放目录 -- /var/log/nginx: nginx 日志目录 - -## 引入环境变量 -- GLOBAL_DIRECTIVES: 一般用不到 - -## 案例 -- [Demo/SingleNode/](Demo/SingleNode/): 单节点 -- [Demo/TwoNodes/](Demo/TwoNodes/): 两节点+高可用 - diff --git a/nginx-1.20.2/nginx.sh b/nginx-1.20.2/nginx.sh deleted file mode 100755 index 460c5f3..0000000 --- a/nginx-1.20.2/nginx.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/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:1.20.2" - -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" -t $IMAGE . - YesOrNo Push image: $IMAGE? && docker push $IMAGE -} - -function Main { - trap Quit EXIT - Update - Build - END=1 -} - -# Start here -Main - diff --git a/nginx-php-7.4/Demo/SingleNode/docker-compose.yml b/nginx-php-7.4/Demo/SingleNode/docker-compose.yml deleted file mode 100644 index 3bd35c1..0000000 --- a/nginx-php-7.4/Demo/SingleNode/docker-compose.yml +++ /dev/null @@ -1,25 +0,0 @@ -version: "3.7" - -services: - nginx-php: - image: harbor.colben.cn/general/nginx-php:7.4 - container_name: nginx-php - restart: "on-failure" - stop_grace_period: 5m - privileged: true - ports: - - 80:80 - volumes: - - type: bind - source: ./nginx/html - target: /var/lib/nginx/html - - type: bind - source: ./nginx/http.d - target: /etc/nginx/http.d - - type: bind - source: ./nginx/log - target: /var/log/nginx - - type: bind - source: ./php7/log - target: /var/log/php7 - diff --git a/nginx-php-7.4/nginx-php.sh b/nginx-php-7.4/nginx-php.sh deleted file mode 100755 index 232faad..0000000 --- a/nginx-php-7.4/nginx-php.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/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:7.4" - -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" -t $IMAGE . - YesOrNo Push image: $IMAGE? && docker push $IMAGE -} - -function Main { - trap Quit EXIT - Update - Build - END=1 -} - -# Start here -Main - diff --git a/nginx-php-8.1/Demo/SingleNode/README.md b/nginx-php-8.1/Demo/SingleNode/README.md deleted file mode 100644 index 29dbe9c..0000000 --- a/nginx-php-8.1/Demo/SingleNode/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# 部署单节点 nginx-php - -- 根据实际环境修改 - - docker-compose.yml - - nginx/http.d/80.conf - -- 创建目录 - ``` - grep '\ /etc/yum.repos.d/pgsql-$VERSION.repo \ - && dnf makecache \ - && dnf -y module disable postgresql \ - && dnf install -y postgresql$VERSION-server \ + && microdnf makecache \ + && microdnf module disable postgresql \ + && microdnf install postgresql$VERSION-server \ && rm -rf /var/lib/pgsql/* \ - /var/cache/dnf \ + /var/cache/yum \ /var/lib/dnf \ /var/log/* \ && rm -f /var/lib/pgsql/.bash* \ diff --git a/pgsql/pgsql.sh b/pgsql/pgsql.sh index c8d0181..8b41c60 100755 --- a/pgsql/pgsql.sh +++ b/pgsql/pgsql.sh @@ -9,8 +9,8 @@ export LANG=en_US.UTF-8 [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" -VERSION=${1:?} -IMAGE="harbor.colben.cn/general/pgsql$ARCH:$VERSION" +TAG=${1:?} +IMAGE="harbor.colben.cn/general/pgsql$ARCH:$TAG" if [ -t 0 ]; then function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } @@ -52,7 +52,7 @@ function Build { && Warn Removing image $IMAGE ... \ && docker rmi $IMAGE Warn Building image: $IMAGE ... - docker build --force-rm --build-arg ARCH="$ARCH" --build-arg VERSION="$VERSION" -t $IMAGE -f Dockerfile . + docker build --force-rm --build-arg ARCH="$ARCH" --build-arg VERSION="$TAG" -t $IMAGE . YesOrNo Push image: $IMAGE? && docker push $IMAGE } diff --git a/photon/Dockerfile b/photon/Dockerfile-4 similarity index 90% rename from photon/Dockerfile rename to photon/Dockerfile-4 index 0e6bf37..eea0bcd 100644 --- a/photon/Dockerfile +++ b/photon/Dockerfile-4 @@ -1,8 +1,8 @@ -FROM photon:5 +FROM photon:4.0 MAINTAINER Colben colbenlee@gmail.com ADD --chown=root:root /ADD/ /etc/ RUN tdnf makecache \ - && tdnf -y install less vim iproute2 shadow tar libstdc++ coreutils \ + && tdnf -y install less vim iproute2 shadow tar libstdc++ coreutils findutils rpm \ && rm -rf /var/cache/tdnf \ && echo "export PS1='\[\e[33;1;1m\][\[\e[0m\]\[\e[35;1m\]\u\[\e[0m\]\[\e[33;1;1m\]@\[\e[0m\]\[\e[31;1;1m\]docker\[\e[0m\]\[\e[32;1;1m\](\h)\[\e[0m\]\[\e[33;1;1m\]:\[\e[0m\]\[\e[32m\]\w\[\e[0m\]\[\e[33;1;1m\]]\[\e[0m\]\[\e[36m\]\$\[\e[0m\] '" >> /etc/bash.bashrc \ && echo "export PS2='\[\e[36m\]>\[\e[0m\] '" >> /etc/bash.bashrc diff --git a/photon/Dockerfile-5 b/photon/Dockerfile-5 new file mode 100644 index 0000000..6aa16e1 --- /dev/null +++ b/photon/Dockerfile-5 @@ -0,0 +1,10 @@ +FROM photon:5.0 +MAINTAINER Colben colbenlee@gmail.com +ADD --chown=root:root /ADD/ /etc/ +RUN tdnf makecache \ + && tdnf -y install less vim iproute2 shadow tar libstdc++ coreutils findutils rpm \ + && rm -rf /var/cache/tdnf \ + && echo "export PS1='\[\e[33;1;1m\][\[\e[0m\]\[\e[35;1m\]\u\[\e[0m\]\[\e[33;1;1m\]@\[\e[0m\]\[\e[31;1;1m\]docker\[\e[0m\]\[\e[32;1;1m\](\h)\[\e[0m\]\[\e[33;1;1m\]:\[\e[0m\]\[\e[32m\]\w\[\e[0m\]\[\e[33;1;1m\]]\[\e[0m\]\[\e[36m\]\$\[\e[0m\] '" >> /etc/bash.bashrc \ + && echo "export PS2='\[\e[36m\]>\[\e[0m\] '" >> /etc/bash.bashrc +ENV LANG=en_US.UTF-8 + diff --git a/photon/photon.sh b/photon/photon.sh index aa7cfcc..2ff4781 100755 --- a/photon/photon.sh +++ b/photon/photon.sh @@ -9,7 +9,8 @@ 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:5" +TAG=$1 +IMAGE="harbor.colben.cn/general/$(basename ${0%.sh})$ARCH:$TAG" if [ -t 0 ]; then function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } @@ -53,7 +54,7 @@ function Build { && Warn Removing image $IMAGE ... \ && docker rmi $IMAGE Warn Building image: $IMAGE ... - docker build --force-rm -t $IMAGE . + docker build --force-rm -t $IMAGE -f Dockerfile-$TAG . YesOrNo Push image: $IMAGE? && docker push $IMAGE } diff --git a/prometheus/Demo/SingleNode/docker-compose.yml b/prometheus/Demo/SingleNode/docker-compose.yml index eb1619c..d118ed3 100644 --- a/prometheus/Demo/SingleNode/docker-compose.yml +++ b/prometheus/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: prometheus: - image: harbor.colben.cn/general/prometheus + image: harbor.boyachain.cn:20443/general/prometheus container_name: prometheus restart: "on-failure" stop_grace_period: 5m diff --git a/redis/Demo/SingleNode/docker-compose.yml b/redis/Demo/SingleNode/docker-compose.yml index 94f9f33..bd7a9a3 100644 --- a/redis/Demo/SingleNode/docker-compose.yml +++ b/redis/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: redis: - image: harbor.colben.cn/general/redis + image: harbor.boyachain.cn:20443/general/redis container_name: redis restart: "on-failure" stop_grace_period: 1m diff --git a/redis/Demo/SixNodes/docker-compose.yml b/redis/Demo/SixNodes/docker-compose.yml index 71db9ed..2e025ad 100644 --- a/redis/Demo/SixNodes/docker-compose.yml +++ b/redis/Demo/SixNodes/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: redis-6371: - image: harbor.colben.cn/general/redis + image: harbor.boyachain.cn:20443/general/redis container_name: redis-6371 restart: on-failure stop_grace_period: 1m @@ -26,7 +26,7 @@ services: target: /var/log/redis redis-6372: - image: harbor.colben.cn/general/redis + image: harbor.boyachain.cn:20443/general/redis container_name: redis-6372 restart: on-failure stop_grace_period: 1m @@ -48,7 +48,7 @@ services: target: /var/log/redis redis-6373: - image: harbor.colben.cn/general/redis + image: harbor.boyachain.cn:20443/general/redis container_name: redis-6373 restart: on-failure stop_grace_period: 1m @@ -70,7 +70,7 @@ services: target: /var/log/redis redis-6374: - image: harbor.colben.cn/general/redis + image: harbor.boyachain.cn:20443/general/redis container_name: redis-6374 restart: on-failure stop_grace_period: 1m @@ -92,7 +92,7 @@ services: target: /var/log/redis redis-6375: - image: harbor.colben.cn/general/redis + image: harbor.boyachain.cn:20443/general/redis container_name: redis-6375 restart: on-failure stop_grace_period: 1m @@ -114,7 +114,7 @@ services: target: /var/log/redis redis-6376: - image: harbor.colben.cn/general/redis + image: harbor.boyachain.cn:20443/general/redis container_name: redis-6376 restart: on-failure stop_grace_period: 1m diff --git a/redis/Demo/ThreeNodes/docker-compose.yml b/redis/Demo/ThreeNodes/docker-compose.yml index c575fa2..8d9f130 100644 --- a/redis/Demo/ThreeNodes/docker-compose.yml +++ b/redis/Demo/ThreeNodes/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: redis-6371: - image: harbor.colben.cn/general/redis + image: harbor.boyachain.cn:20443/general/redis container_name: redis-6371 restart: on-failure stop_grace_period: 1m @@ -25,7 +25,7 @@ services: target: /var/log/redis redis-6372: - image: harbor.colben.cn/general/redis + image: harbor.boyachain.cn:20443/general/redis container_name: redis-6372 restart: on-failure stop_grace_period: 1m @@ -47,7 +47,7 @@ services: target: /var/log/redis redis-6373: - image: harbor.colben.cn/general/redis + image: harbor.boyachain.cn:20443/general/redis container_name: redis-6373 restart: on-failure stop_grace_period: 1m diff --git a/redis/Dockerfile b/redis/Dockerfile index 75fbae2..b9d4db9 100644 --- a/redis/Dockerfile +++ b/redis/Dockerfile @@ -1,11 +1,11 @@ ARG ARCH -FROM harbor.colben.cn/general/alpine$ARCH +FROM harbor.colben.cn/general/alpine$ARCH:3.20 MAINTAINER Colben colbenlee@gmail.com ADD --chown=root:root /ADD/ /opt/ RUN apk update \ - && curl -sSLO https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.15/main/x86_64/redis-6.2.9-r0.apk \ - && apk add --allow-untrusted redis-6.2.9-r0.apk \ + && curl -sSLO https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.15/main/$(uname -m)/redis-6.2.18-r0.apk \ + && apk add --allow-untrusted redis-6.2.18-r0.apk \ && mv /etc/redis.conf /etc/redis.conf.origin \ - && rm -rf /var/cache/apk/* redis-6.2.9-r0.apk + && rm -rf /var/cache/apk/* redis-6.2.18-r0.apk CMD ["/opt/ccmd"] diff --git a/rocky-django/Dockerfile b/rocky-django/Dockerfile index 9284d29..d92114b 100644 --- a/rocky-django/Dockerfile +++ b/rocky-django/Dockerfile @@ -1,5 +1,5 @@ ARG ARCH -FROM harbor.colben.cn/general/rocky-python$ARCH +FROM harbor.colben.cn/general/rocky-python$ARCH:3.9 MAINTAINER Colben colbenlee@gmail.com ARG ARCH RUN pip3 install \ diff --git a/rocky-python/Dockerfile b/rocky-python/Dockerfile deleted file mode 100644 index 834d0ee..0000000 --- a/rocky-python/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -ARG ARCH -FROM harbor.colben.cn/general/rocky$ARCH:8 -MAINTAINER Colben colbenlee@gmail.com -RUN dnf makecache \ - && dnf install gcc gcc-c++ make cmake python39-devel mysql-devel -y \ - && rm -rf /var/cache/dnf /var/lib/dnf - diff --git a/rocky-python/Dockerfile-3.11 b/rocky-python/Dockerfile-3.11 new file mode 100644 index 0000000..a43c4c3 --- /dev/null +++ b/rocky-python/Dockerfile-3.11 @@ -0,0 +1,7 @@ +ARG ARCH +FROM harbor.colben.cn/general/rocky$ARCH:8 +MAINTAINER Colben colbenlee@gmail.com +RUN microdnf makecache \ + && microdnf install gcc gcc-c++ make cmake python3.11-pip python3.11-devel mysql-devel \ + && rm -rf /var/cache/yum /var/lib/dnf + diff --git a/rocky-python/Dockerfile-3.9 b/rocky-python/Dockerfile-3.9 new file mode 100644 index 0000000..02a8339 --- /dev/null +++ b/rocky-python/Dockerfile-3.9 @@ -0,0 +1,7 @@ +ARG ARCH +FROM harbor.colben.cn/general/rocky$ARCH:8 +MAINTAINER Colben colbenlee@gmail.com +RUN microdnf makecache \ + && microdnf install gcc gcc-c++ make cmake python39-devel mysql-devel \ + && rm -rf /var/cache/yum /var/lib/dnf + diff --git a/rocky-python/README.md b/rocky-python/README.md index 75ffe52..0dc47df 100644 --- a/rocky-python/README.md +++ b/rocky-python/README.md @@ -1,5 +1,5 @@ # 构建 python 镜像 ## 定制 -- 安装 python39 及其编译工具 +- 安装 python3 及其编译工具 diff --git a/rocky-python/rocky-python.sh b/rocky-python/rocky-python.sh index 7c036fd..d3a3837 100755 --- a/rocky-python/rocky-python.sh +++ b/rocky-python/rocky-python.sh @@ -9,7 +9,8 @@ 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:latest" +TAG=$1 +IMAGE="harbor.colben.cn/general/$(basename ${0%.sh})$ARCH:$TAG" if [ -t 0 ]; then function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } @@ -51,7 +52,7 @@ function Build { && Warn Removing image $IMAGE ... \ && docker rmi $IMAGE Warn Building image: $IMAGE ... - docker build --force-rm --build-arg ARCH="$ARCH" -t $IMAGE . + docker build --force-rm --build-arg ARCH="$ARCH" -t $IMAGE -f Dockerfile-$TAG . YesOrNo Push image: $IMAGE? && docker push $IMAGE } diff --git a/rocky8/Dockerfile b/rocky/Dockerfile-8 similarity index 64% rename from rocky8/Dockerfile rename to rocky/Dockerfile-8 index 79d54ae..16ad90d 100644 --- a/rocky8/Dockerfile +++ b/rocky/Dockerfile-8 @@ -1,23 +1,23 @@ -FROM rockylinux/rockylinux:8 +FROM rockylinux/rockylinux:8-minimal MAINTAINER Colben colbenlee@gmail.com RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && rm -f /etc/yum.repos.d/* \ && echo -e '[AppStream]\n\ name=Rocky-$releasever - AppStream\n\ -baseurl=https://mirrors.nju.edu.cn/rocky/$releasever/AppStream/$basearch/os/\n\ +baseurl=https://mirrors.ustc.edu.cn/rocky/$releasever/AppStream/$basearch/os/\n\ enabled=1\n\ gpgcheck=0\n\ \n\ [BaseOS]\n\ name=Rocky-$releasever - Base\n\ -baseurl=https://mirrors.nju.edu.cn/rocky/$releasever/BaseOS/$basearch/os/\n\ +baseurl=https://mirrors.ustc.edu.cn/rocky/$releasever/BaseOS/$basearch/os/\n\ enabled=1\n\ gpgcheck=0\n\ -' > /etc/yum.repos.d/rocky8.repo \ - && dnf makecache \ - && dnf install -y ncurses iproute procps-ng glibc-langpack-en \ +' > /etc/yum.repos.d/rocky.repo \ + && microdnf makecache \ + && microdnf install ncurses iproute procps-ng glibc-langpack-en findutils less pam tar \ && echo 'alias ls="ls --color=auto"' > /etc/profile.d/docker.sh \ - && rm -rf /var/cache/dnf /var/lib/dnf \ + && rm -rf /var/cache/yum /var/lib/dnf \ && rm -rf /var/log/* ENV PS1='\[\e[33;1;1m\][\[\e[0m\]\[\e[35;1m\]\u\[\e[0m\]\[\e[33;1;1m\]@\[\e[0m\]\[\e[31;1;1m\]docker\[\e[0m\]\[\e[32;1;1m\](\h)\[\e[0m\]\[\e[33;1;1m\]:\[\e[0m\]\[\e[32m\]\w\[\e[0m\]\[\e[33;1;1m\]]\[\e[0m\]\[\e[36m\]\$\[\e[0m\] ' ENV PS2='\[\e[36m\]>\[\e[0m\] ' diff --git a/rocky8/README.md b/rocky/README.md similarity index 100% rename from rocky8/README.md rename to rocky/README.md diff --git a/rocky8/rocky.sh b/rocky/rocky.sh similarity index 93% rename from rocky8/rocky.sh rename to rocky/rocky.sh index fc4ea95..8b8b480 100755 --- a/rocky8/rocky.sh +++ b/rocky/rocky.sh @@ -9,7 +9,8 @@ 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:8" +TAG=$1 +IMAGE="harbor.colben.cn/general/$(basename ${0%.sh})$ARCH:$TAG" if [ -t 0 ]; then function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } @@ -23,6 +24,7 @@ fi function Quit { local exitCode=$? + rm -f Dockerfile [ 0 -ne $exitCode ] && Error Failed to build or push image! [ -z "${END:-}" ] && echo && Error Interrupted manually! Print Succeeded to build and push image. @@ -53,6 +55,7 @@ function Build { && Warn Removing image $IMAGE ... \ && docker rmi $IMAGE Warn Building image: $IMAGE ... + ln -sf Dockerfile-$TAG Dockerfile docker build --force-rm -t $IMAGE . YesOrNo Push image: $IMAGE? && docker push $IMAGE } diff --git a/rsync/Demo/SingleNode/docker-compose.yml b/rsync/Demo/SingleNode/docker-compose.yml index 140ebf3..e74acb2 100644 --- a/rsync/Demo/SingleNode/docker-compose.yml +++ b/rsync/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: rsync: - image: harbor.colben.cn/general/rsync + image: harbor.boyachain.cn:20443/general/rsync container_name: rsync restart: "on-failure" stop_grace_period: 1m diff --git a/svn/Demo/SingleNode/docker-compose.yml b/svn/Demo/SingleNode/docker-compose.yml index 7e35d35..aded632 100644 --- a/svn/Demo/SingleNode/docker-compose.yml +++ b/svn/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: svn: - image: harbor.colben.cn/general/svn + image: harbor.boyachain.cn:20443/general/svn container_name: svn restart: "on-failure" stop_grace_period: 1m diff --git a/svn/Dockerfile b/svn/Dockerfile index cc7a04a..d0a1403 100644 --- a/svn/Dockerfile +++ b/svn/Dockerfile @@ -1,5 +1,5 @@ ARG ARCH -FROM harbor.colben.cn/general/alpine$ARCH +FROM harbor.colben.cn/general/alpine$ARCH:3.20 MAINTAINER Colben colbenlee@gmail.com ADD --chown=root:root /ADD/ /opt/ RUN apk update \ diff --git a/tomcat/Demo/SingleNode/docker-compose.yml b/tomcat/Demo/SingleNode/docker-compose.yml index 362b533..73c7cb4 100644 --- a/tomcat/Demo/SingleNode/docker-compose.yml +++ b/tomcat/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: tomcat: - image: harbor.colben.cn/general/tomcat:8 + image: harbor.boyachain.cn:20443/general/tomcat:8 container_name: tomcat restart: "on-failure" stop_grace_period: 1m diff --git a/vsftpd/Demo/docker-compose.yml b/vsftpd/Demo/docker-compose.yml index d5f7816..53180d2 100644 --- a/vsftpd/Demo/docker-compose.yml +++ b/vsftpd/Demo/docker-compose.yml @@ -5,7 +5,7 @@ services: # 把容器的数据目录挂载到宿主机数据盘 /data/ftp # 默认主动模式,控制端口默认监听 21 vsftpd-anonymous: - image: harbor.colben.cn/general/vsftpd:latest + image: harbor.boyachain.cn:20443/general/vsftpd:latest container_name: vsftpd-anonymous restart: "on-failure" network_mode: host @@ -25,7 +25,7 @@ services: # 把容器的数据目录挂载到宿主机数据盘 /data/ftp # 默认主动模式,控制端口监听 3021 vsftpd-full: - image: harbor.colben.cn/general/vsftpd:latest + image: harbor.boyachain.cn:20443/general/vsftpd:latest container_name: vsftpd-full restart: "on-failure" environment: @@ -52,7 +52,7 @@ services: # 把容器的数据目录挂载到宿主机数据盘 /data/ftp # 开启被动模式,控制端口监听 8021,数据端口监听 8022 vsftpd: - image: harbor.colben.cn/general/vsftpd:latest + image: harbor.boyachain.cn:20443/general/vsftpd:latest container_name: vsftpd restart: "on-failure" environment: diff --git a/vsftpd/Dockerfile b/vsftpd/Dockerfile index ca67e38..ff94ba1 100644 --- a/vsftpd/Dockerfile +++ b/vsftpd/Dockerfile @@ -1,5 +1,5 @@ ARG ARCH -FROM harbor.colben.cn/general/alpine$ARCH:3.12 +FROM harbor.colben.cn/general/alpine$ARCH:3.20 MAINTAINER Colben colbenlee@gmail.com ADD --chown=root:root /ADD/ /opt/ RUN apk update \ diff --git a/zabbix/Demo/SingleNode/docker-compose.yml b/zabbix/Demo/SingleNode/docker-compose.yml index 9c94e4c..aa7f795 100644 --- a/zabbix/Demo/SingleNode/docker-compose.yml +++ b/zabbix/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: zabbix: - image: harbor.colben.cn/general/zabbix + image: harbor.boyachain.cn:20443/general/zabbix container_name: zabbix restart: "on-failure" stop_grace_period: 1m diff --git a/zookeeper/Demo/SingleNode/docker-compose.yml b/zookeeper/Demo/SingleNode/docker-compose.yml index f922264..d09a8a3 100644 --- a/zookeeper/Demo/SingleNode/docker-compose.yml +++ b/zookeeper/Demo/SingleNode/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: zk: - image: harbor.colben.cn/general/zookeeper:3.6 + image: harbor.boyachain.cn:20443/general/zookeeper:3.6 container_name: zk restart: on-failure environment: diff --git a/zookeeper/Demo/ThreeNodes/docker-compose.yml b/zookeeper/Demo/ThreeNodes/docker-compose.yml index cff5759..b4d62e9 100644 --- a/zookeeper/Demo/ThreeNodes/docker-compose.yml +++ b/zookeeper/Demo/ThreeNodes/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: zk1: - image: harbor.colben.cn/general/zookeeper:3.6 + image: harbor.boyachain.cn:20443/general/zookeeper:3.6 container_name: zk1 restart: on-failure environment: @@ -27,7 +27,7 @@ services: target: /opt/zk/logs zk2: - image: harbor.colben.cn/general/zookeeper:3.6 + image: harbor.boyachain.cn:20443/general/zookeeper:3.6 container_name: zk2 restart: on-failure environment: @@ -52,7 +52,7 @@ services: target: /opt/zk/logs zk3: - image: harbor.colben.cn/general/zookeeper:3.6 + image: harbor.boyachain.cn:20443/general/zookeeper:3.6 container_name: zk3 restart: on-failure environment: