From 919c1dbecc30c8cdfe4d8616bf5de84600673be0 Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 13:56:01 +0800 Subject: [PATCH 01/15] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=B9=E5=99=A8?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=85=A5=E5=8F=A3=E6=96=87=E4=BB=B6=EF=BC=8C?= =?UTF-8?q?=E6=95=B4=E7=90=86=E5=8F=82=E6=95=B0=E9=85=8D=E7=BD=AE=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/crontab_list.sh | 5 +- docker/crontab_list_ts.sh | 5 +- docker/default_task.sh | 94 +++++++++++++++ docker/docker_entrypoint.sh | 113 ++++++++++++++++++ docker/{ => example}/docker-compose.yml | 0 .../docker多账户使用独立容器使用说明.md | 0 .../jd_scripts.my_crontab_list.syno.json | 0 docker/{ => example}/jd_scripts.syno.json | 0 8 files changed, 211 insertions(+), 6 deletions(-) create mode 100644 docker/default_task.sh create mode 100644 docker/docker_entrypoint.sh rename docker/{ => example}/docker-compose.yml (100%) rename docker/{ => example}/docker多账户使用独立容器使用说明.md (100%) rename docker/{ => example}/jd_scripts.my_crontab_list.syno.json (100%) rename docker/{ => example}/jd_scripts.syno.json (100%) diff --git a/docker/crontab_list.sh b/docker/crontab_list.sh index 4fd063d4..1a8acffe 100644 --- a/docker/crontab_list.sh +++ b/docker/crontab_list.sh @@ -1,6 +1,5 @@ -50 */1 * * * git -C /scripts/ pull >> /scripts/logs/pull.log 2>&1 -52 */1 * * * crontab /scripts/docker/${CRONTAB_LIST_FILE} -53 */1 * * * npm install --prefix /scripts >> /scripts/logs/npm_install.log 2>&1 +#必须要的默认定时任务请勿删除 +52 */1 * * * sh /scripts/default_task.sh |ts >> /scripts/logs/pull.log 2>&1 # 每3天的23:50分清理一次日志 50 23 */3 * * rm -rf /scripts/logs/*.log diff --git a/docker/crontab_list_ts.sh b/docker/crontab_list_ts.sh index 4271b171..105dc20a 100644 --- a/docker/crontab_list_ts.sh +++ b/docker/crontab_list_ts.sh @@ -1,6 +1,5 @@ -50 */1 * * * git -C /scripts/ pull |ts >> /scripts/logs/pull.log 2>&1 -52 */1 * * * crontab /scripts/docker/${CRONTAB_LIST_FILE} -53 */1 * * * npm install --prefix /scripts |ts >> /scripts/logs/npm_install.log 2>&1 +#必须要的默认定时任务请勿删除 +52 */1 * * * sh /scripts/default_task.sh |ts >> /scripts/logs/pull.log 2>&1 # 每3天的23:50分清理一次日志 50 23 */3 * * rm -rf /scripts/logs/*.log diff --git a/docker/default_task.sh b/docker/default_task.sh new file mode 100644 index 00000000..c413b19c --- /dev/null +++ b/docker/default_task.sh @@ -0,0 +1,94 @@ +#!/bin/sh +set -e + +echo "定时任务更新代码,git 拉取最新代码,并安装更新依赖..." +git -C /scripts pull +npm install --prefix /scripts + +######################################获取docker构建文件里面的自定义信息方法-start##################################################### +function getDockerImageLabel() { + repo=akyakya/jd_scripts + imageTag=test + token=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repo}:pull" | jq -r '.token') + digest=$(curl -s -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/${repo}/manifests/${imageTag}" | jq .config.digest -r) + labels=$(curl -s -L -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/${repo}/blobs/$digest" | jq .config.Labels) + echo $labels +} +######################################获取docker构建文件里面的自定义信息方法-end##################################################### + + +######################################对比版本版本号大小方法-start################################################################### +function version_gt() { + test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" +} +######################################对比版本版本号大小方法-end################################################################### +#######################################通知用户更新镜像-start##################################################################### +if type jq >/dev/null 2>&1; then + updateContext=$(getDockerImageLabel | jq .UPDATE_CONTEXT) + version=$(getDockerImageLabel | jq .VERSION) +fi + +#通知通知用户更新镜像 +if [ ! $BUILD_VERSION ]; then + if [ $version ]; then + cd /scripts/docker + node notify_docker_user.js + fi +else + if version_gt $version $BUILD_VERSION; then + cd /scripts/docker + node notify_docker_user.js + fi +fi +#######################################通知用户更新镜像-end##################################################################### + +##兼容旧镜像的环境变量 +if [ !$DEFAULT_LIST_FILE ]; then + defaultListFile="/scripts/docker/crontab_list.sh" +else + defaultListFile="/scripts/docker/$DEFAULT_LIST_FILE" +fi + +customListFile="/scripts/docker/$CUSTOM_LIST_FILE" +mergedListFile="/scripts/docker/merged_list_file.sh" + +if type ts >/dev/null 2>&1; then + echo 'moreutils tools installed, default task append |ts output' + echo '系统已安装moreutils工具包,默认定时任务增加|ts 输出' + ##复制一个新文件来追加|ts,防止git pull的时候冲突 + cp $defaultListFile /scripts/docker/default_list.sh + defaultListFile="/scripts/docker/default_list.sh" + + sed -i 's/>>/|ts >>/g' $defaultListFile +fi + +echo "定时任务合并加载最新定时任务列表..." +#判断 自定义文件是否存在 是否存在 +if [ $CUSTOM_LIST_FILE ]; then + echo "您配置了自定义任务文件:$CUSTOM_LIST_FILE,自定义任务类型为:$CUSTOM_LIST_MERGE_TYPE..." + if [ -f "$customListFile" ]; then + if [ $CUSTOM_LIST_MERGE_TYPE == "append" ]; then + echo "合并默认定时任务文件:$DEFAULT_LIST_FILE 和 自定义定时任务文件:$CUSTOM_LIST_FILE" + cat $defaultListFile >$mergedListFile + echo -e "" >>$mergedListFile + cat $customListFile >>$mergedListFile + elif [ $CUSTOM_LIST_MERGE_TYPE == "overwrite" ]; then + cat $customListFile >$mergedListFile + echo "$CUSTOM_LIST_FILE but file ..." + echo "配置了自定义任务文件:$CUSTOM_LIST_FILE,自定义任务类型为:$CUSTOM_LIST_MERGE_TYPE..." + touch "$customListFile" + else + echo "配置配置了错误的自定义定时任务类型:$CUSTOM_LIST_MERGE_TYPE,自定义任务类型为只能为append或者overwrite..." + cat $defaultListFile >$mergedListFile + fi + else + echo "配置的自定义任务文件:$CUSTOM_LIST_FILE未找到,使用默认配置$DEFAULT_LIST_FILE..." + cat $defaultListFile >$mergedListFile + fi +else + echo "当前使用的为默认定时任务文件 $DEFAULT_LIST_FILE ..." + cat $defaultListFile >$mergedListFile +fi + +echo "加载最新的定时任务文件..." +crontab $mergedListFile diff --git a/docker/docker_entrypoint.sh b/docker/docker_entrypoint.sh new file mode 100644 index 00000000..737009d9 --- /dev/null +++ b/docker/docker_entrypoint.sh @@ -0,0 +1,113 @@ +#!/bin/sh +set -e + +export LANG="zh_CN.UTF-8" + +if [ $1 ]; then + echo "Currently does not support specifying startup parameters" + echo "Please delete the last command attached to $(docker run) or the configured $(command:) parameter in $(docker-compose.yml)" + echo "暂时不支持指定启动参数,请删除 docker run时最后附带的命令 或者 docker-compose.yml中的配置的command:指令 " +fi + +echo "##############################################################################" +echo "Container start , Pull the latest code..." +echo "容器启动,git 拉取最新代码..." +git -C /scripts pull +npm install --prefix /scripts +echo "##############################################################################" + +######################################获取docker构建文件里面的自定义信息方法-start##################################################### +function getDockerImageLabel() { + repo=akyakya/jd_scripts + imageTag=test + token=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repo}:pull" | jq -r '.token') + digest=$(curl -s -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/${repo}/manifests/${imageTag}" | jq .config.digest -r) + labels=$(curl -s -L -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/${repo}/blobs/$digest" | jq .config.Labels) + echo $labels +} +######################################获取docker构建文件里面的自定义信息方法-end##################################################### + + +######################################对比版本版本号大小方法-start################################################################### +function version_gt() { + test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" +} +######################################对比版本版本号大小方法-end################################################################### +#######################################通知用户更新镜像-start##################################################################### +if type jq >/dev/null 2>&1; then + updateContext=$(getDockerImageLabel | jq .UPDATE_CONTEXT) + version=$(getDockerImageLabel | jq .VERSION) +fi + +#通知通知用户更新镜像 +if [ ! $BUILD_VERSION ]; then + if [ $version ]; then + cd /scripts/docker + node notify_docker_user.js + fi +else + if version_gt $version $BUILD_VERSION; then + cd /scripts/docker + node notify_docker_user.js + fi +fi +#######################################通知用户更新镜像-end##################################################################### + +##兼容旧镜像的环境变量 +if [ !$DEFAULT_LIST_FILE ]; then + defaultListFile="/scripts/docker/crontab_list.sh" +else + defaultListFile="/scripts/docker/$DEFAULT_LIST_FILE" +fi + +customListFile="/scripts/docker/$CUSTOM_LIST_FILE" +mergedListFile="/scripts/docker/merged_list_file.sh" + +if type ts >/dev/null 2>&1; then + echo 'moreutils tools installed, default task append |ts output' + echo '系统已安装moreutils工具包,默认定时任务增加|ts 输出' + ##复制一个新文件来追加|ts,防止git pull的时候冲突 + cp $defaultListFile /scripts/docker/default_list.sh + defaultListFile="/scripts/docker/default_list.sh" + + sed -i 's/>>/|ts >>/g' $defaultListFile +fi + +#判断 自定义文件是否存在 是否存在 +if [ $CUSTOM_LIST_FILE ]; then + echo "You have configured a custom list file: $CUSTOM_LIST_FILE, custom list merge type: $CUSTOM_LIST_MERGE_TYPE..." + echo "您配置了自定义任务文件:$CUSTOM_LIST_FILE,自定义任务类型为:$CUSTOM_LIST_MERGE_TYPE..." + if [ -f "$customListFile" ]; then + if [ $CUSTOM_LIST_MERGE_TYPE == "append" ]; then + echo "merge default list file: $DEFAULT_LIST_FILE and custom list file: $CUSTOM_LIST_FILE" + echo "合并默认定时任务文件:$DEFAULT_LIST_FILE 和 自定义定时任务文件:$CUSTOM_LIST_FILE" + cat $defaultListFile >$mergedListFile + echo -e "" >>$mergedListFile + cat $customListFile >>$mergedListFile + elif [ $CUSTOM_LIST_MERGE_TYPE == "overwrite" ]; then + cat $customListFile >$mergedListFile + echo "merge custom list file: $CUSTOM_LIST_FILE..." + echo "合并自定义任务文件:$CUSTOM_LIST_FILE" + touch "$customListFile" + else + echo "配置配置了错误的自定义定时任务类型:$CUSTOM_LIST_MERGE_TYPE,自定义任务类型为只能为append或者overwrite..." + cat $defaultListFile >$mergedListFile + fi + else + echo "Not found custom list file: $CUSTOM_LIST_FILE ,use default list file: $DEFAULT_LIST_FILE" + echo "自定义任务文件:$CUSTOM_LIST_FILE 未找到,使用默认配置$DEFAULT_LIST_FILE..." + cat $defaultListFile >$mergedListFile + fi +else + echo "The currently used is the default crontab task file: $DEFAULT_LIST_FILE ..." + echo "当前使用的为默认定时任务文件 $DEFAULT_LIST_FILE ..." + cat $defaultListFile >$mergedListFile +fi + +echo "Load the latest crontab task file..." +echo "加载最新的定时任务文件..." +crontab $mergedListFile + +echo "Start crontab task main process..." +echo "启动crondtab定时任务主进程..." +crond -f diff --git a/docker/docker-compose.yml b/docker/example/docker-compose.yml similarity index 100% rename from docker/docker-compose.yml rename to docker/example/docker-compose.yml diff --git a/docker/docker多账户使用独立容器使用说明.md b/docker/example/docker多账户使用独立容器使用说明.md similarity index 100% rename from docker/docker多账户使用独立容器使用说明.md rename to docker/example/docker多账户使用独立容器使用说明.md diff --git a/docker/jd_scripts.my_crontab_list.syno.json b/docker/example/jd_scripts.my_crontab_list.syno.json similarity index 100% rename from docker/jd_scripts.my_crontab_list.syno.json rename to docker/example/jd_scripts.my_crontab_list.syno.json diff --git a/docker/jd_scripts.syno.json b/docker/example/jd_scripts.syno.json similarity index 100% rename from docker/jd_scripts.syno.json rename to docker/example/jd_scripts.syno.json From 17db06ca943f10984eb89cfd1e7a9513a6cf58b2 Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 13:56:32 +0800 Subject: [PATCH 02/15] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E9=95=9C=E5=83=8Ftag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/default_task.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/default_task.sh b/docker/default_task.sh index c413b19c..286268f7 100644 --- a/docker/default_task.sh +++ b/docker/default_task.sh @@ -8,7 +8,7 @@ npm install --prefix /scripts ######################################获取docker构建文件里面的自定义信息方法-start##################################################### function getDockerImageLabel() { repo=akyakya/jd_scripts - imageTag=test + imageTag=dev token=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repo}:pull" | jq -r '.token') digest=$(curl -s -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/${repo}/manifests/${imageTag}" | jq .config.digest -r) labels=$(curl -s -L -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/${repo}/blobs/$digest" | jq .config.Labels) From 2f3a84d42cabaa22b817c1816d66690d7a172963 Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 14:00:31 +0800 Subject: [PATCH 03/15] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/crontab_list.sh | 2 +- docker/crontab_list_ts.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/crontab_list.sh b/docker/crontab_list.sh index 1a8acffe..b4ac3948 100644 --- a/docker/crontab_list.sh +++ b/docker/crontab_list.sh @@ -1,5 +1,5 @@ #必须要的默认定时任务请勿删除 -52 */1 * * * sh /scripts/default_task.sh |ts >> /scripts/logs/pull.log 2>&1 +52 */1 * * * sh /scripts/docker/default_task.sh |ts >> /scripts/logs/pull.log 2>&1 # 每3天的23:50分清理一次日志 50 23 */3 * * rm -rf /scripts/logs/*.log diff --git a/docker/crontab_list_ts.sh b/docker/crontab_list_ts.sh index 105dc20a..4c5b8cfb 100644 --- a/docker/crontab_list_ts.sh +++ b/docker/crontab_list_ts.sh @@ -1,5 +1,5 @@ #必须要的默认定时任务请勿删除 -52 */1 * * * sh /scripts/default_task.sh |ts >> /scripts/logs/pull.log 2>&1 +52 */1 * * * sh /scripts/docker/default_task.sh |ts >> /scripts/logs/pull.log 2>&1 # 每3天的23:50分清理一次日志 50 23 */3 * * rm -rf /scripts/logs/*.log From 66c9272604e72f1fcd2cf35893982883ccd81e32 Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 14:31:04 +0800 Subject: [PATCH 04/15] =?UTF-8?q?=F0=9F=93=A6=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E6=98=AF=E5=8C=85=E5=90=AB=E5=BF=85=E9=A1=BB?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=BB=98=E8=AE=A4=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=B2=A1=E6=9C=89=E5=B0=B1=E5=8A=A0=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/default_task.sh | 8 ++++++-- docker/docker_entrypoint.sh | 8 +++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/docker/default_task.sh b/docker/default_task.sh index 286268f7..aad63727 100644 --- a/docker/default_task.sh +++ b/docker/default_task.sh @@ -16,7 +16,6 @@ function getDockerImageLabel() { } ######################################获取docker构建文件里面的自定义信息方法-end##################################################### - ######################################对比版本版本号大小方法-start################################################################### function version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" @@ -53,7 +52,6 @@ customListFile="/scripts/docker/$CUSTOM_LIST_FILE" mergedListFile="/scripts/docker/merged_list_file.sh" if type ts >/dev/null 2>&1; then - echo 'moreutils tools installed, default task append |ts output' echo '系统已安装moreutils工具包,默认定时任务增加|ts 输出' ##复制一个新文件来追加|ts,防止git pull的时候冲突 cp $defaultListFile /scripts/docker/default_list.sh @@ -90,5 +88,11 @@ else cat $defaultListFile >$mergedListFile fi +# 判断最后要加载的定时任务是否包含默认定时任务,不包含的话就加进去 +if [ $(grep -c "default_task.sh" $mergedListFile) -eq '0' ]; then + echo -e >>$mergedListFile + echo "52 */1 * * * sh /scripts/docker/default_task.sh |ts >> /scripts/logs/default_task.log 2>&1" >>$mergedListFile +fi + echo "加载最新的定时任务文件..." crontab $mergedListFile diff --git a/docker/docker_entrypoint.sh b/docker/docker_entrypoint.sh index 737009d9..f36aa47d 100644 --- a/docker/docker_entrypoint.sh +++ b/docker/docker_entrypoint.sh @@ -19,7 +19,7 @@ echo "########################################################################## ######################################获取docker构建文件里面的自定义信息方法-start##################################################### function getDockerImageLabel() { repo=akyakya/jd_scripts - imageTag=test + imageTag=dev token=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repo}:pull" | jq -r '.token') digest=$(curl -s -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/${repo}/manifests/${imageTag}" | jq .config.digest -r) labels=$(curl -s -L -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/${repo}/blobs/$digest" | jq .config.Labels) @@ -104,6 +104,12 @@ else cat $defaultListFile >$mergedListFile fi +# 判断最后要加载的定时任务是否包含默认定时任务,不包含的话就加进去 +if [ $(grep -c "default_task.sh" $mergedListFile) -eq '0' ]; then + echo -e >>$mergedListFile + echo "52 */1 * * * sh /scripts/docker/default_task.sh |ts >> /scripts/logs/default_task.log 2>&1" >>$mergedListFile +fi + echo "Load the latest crontab task file..." echo "加载最新的定时任务文件..." crontab $mergedListFile From 9326930c18eea20fd62afe70779177e18828a075 Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 14:47:13 +0800 Subject: [PATCH 05/15] =?UTF-8?q?=E2=9C=85=20=E6=B5=8B=E8=AF=95dev=20tag?= =?UTF-8?q?=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/default_task.sh | 10 ++++++++++ docker/docker_entrypoint.sh | 9 +++++++-- docker/notify_docker_user.js | 7 +++++++ 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 docker/notify_docker_user.js diff --git a/docker/default_task.sh b/docker/default_task.sh index aad63727..a66acd54 100644 --- a/docker/default_task.sh +++ b/docker/default_task.sh @@ -21,10 +21,20 @@ function version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" } ######################################对比版本版本号大小方法-end################################################################### + +if [ ! $BUILD_VERSION ]; then + +fi #######################################通知用户更新镜像-start##################################################################### if type jq >/dev/null 2>&1; then updateContext=$(getDockerImageLabel | jq .UPDATE_CONTEXT) + export NOTIFY_CONTEXT=$updateContext version=$(getDockerImageLabel | jq .VERSION) +else + # 第一版通知逻辑无法包含在上面判断里面,镜像构建好直接开启通知 + export NOTIFY_CONTEXT="更新内容较多,重新阅读仓库Readme(),更新镜像并更新配置后使用。" + cd /scripts/docker + node notify_docker_user.js fi #通知通知用户更新镜像 diff --git a/docker/docker_entrypoint.sh b/docker/docker_entrypoint.sh index f36aa47d..7581813b 100644 --- a/docker/docker_entrypoint.sh +++ b/docker/docker_entrypoint.sh @@ -27,18 +27,23 @@ function getDockerImageLabel() { } ######################################获取docker构建文件里面的自定义信息方法-end##################################################### - ######################################对比版本版本号大小方法-start################################################################### function version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" } ######################################对比版本版本号大小方法-end################################################################### + #######################################通知用户更新镜像-start##################################################################### if type jq >/dev/null 2>&1; then updateContext=$(getDockerImageLabel | jq .UPDATE_CONTEXT) + export NOTIFY_CONTEXT=$updateContext version=$(getDockerImageLabel | jq .VERSION) +else + #第一版通知逻辑无法包含在上面判断里面,镜像构建好直接开启通知 + export NOTIFY_CONTEXT="更新内容较多,重新阅读仓库Readme(),更新镜像并更新配置后使用。" + cd /scripts/docker + node notify_docker_user.js fi - #通知通知用户更新镜像 if [ ! $BUILD_VERSION ]; then if [ $version ]; then diff --git a/docker/notify_docker_user.js b/docker/notify_docker_user.js new file mode 100644 index 00000000..4516f663 --- /dev/null +++ b/docker/notify_docker_user.js @@ -0,0 +1,7 @@ +const notify = require('../sendNotify'); + +function image_update_notify() { + notify.sendNotify("⚠️Docker镜像版本更新通知⚠️", process.env.NOTIFY_CONTEXT) +} + +image_update_notify(); \ No newline at end of file From a1abb31083c2147818faa7bcdcb31f2aee057a3c Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 14:59:20 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=F0=9F=94=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/default_task.sh | 4 +--- docker/docker_entrypoint.sh | 2 ++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/default_task.sh b/docker/default_task.sh index a66acd54..f81f6fa4 100644 --- a/docker/default_task.sh +++ b/docker/default_task.sh @@ -22,10 +22,8 @@ function version_gt() { } ######################################对比版本版本号大小方法-end################################################################### -if [ ! $BUILD_VERSION ]; then - -fi #######################################通知用户更新镜像-start##################################################################### +echo "检查docker镜像更新更新..." if type jq >/dev/null 2>&1; then updateContext=$(getDockerImageLabel | jq .UPDATE_CONTEXT) export NOTIFY_CONTEXT=$updateContext diff --git a/docker/docker_entrypoint.sh b/docker/docker_entrypoint.sh index 7581813b..cc0c2fad 100644 --- a/docker/docker_entrypoint.sh +++ b/docker/docker_entrypoint.sh @@ -34,6 +34,8 @@ function version_gt() { ######################################对比版本版本号大小方法-end################################################################### #######################################通知用户更新镜像-start##################################################################### +echo "check docker images update..." +echo "检查docker镜像更新更新..." if type jq >/dev/null 2>&1; then updateContext=$(getDockerImageLabel | jq .UPDATE_CONTEXT) export NOTIFY_CONTEXT=$updateContext From da1f9beb634b1d12ba0f8c4f23b8d402ba2f8e25 Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 15:34:22 +0800 Subject: [PATCH 07/15] =?UTF-8?q?=E2=9C=85=20=E6=B5=8B=E6=98=AFdev?= =?UTF-8?q?=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/default_task.sh | 6 +++--- docker/docker_entrypoint.sh | 8 ++++---- docker/notify_docker_user.js | 4 +++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/docker/default_task.sh b/docker/default_task.sh index f81f6fa4..5628f727 100644 --- a/docker/default_task.sh +++ b/docker/default_task.sh @@ -25,9 +25,9 @@ function version_gt() { #######################################通知用户更新镜像-start##################################################################### echo "检查docker镜像更新更新..." if type jq >/dev/null 2>&1; then - updateContext=$(getDockerImageLabel | jq .UPDATE_CONTEXT) - export NOTIFY_CONTEXT=$updateContext - version=$(getDockerImageLabel | jq .VERSION) + labels=$(getDockerImageLabel) + export NOTIFY_CONTENT=$(echo $labels | jq .UPDATE_CONTENT) + version=$(echo $labels | jq .VERSION) else # 第一版通知逻辑无法包含在上面判断里面,镜像构建好直接开启通知 export NOTIFY_CONTEXT="更新内容较多,重新阅读仓库Readme(),更新镜像并更新配置后使用。" diff --git a/docker/docker_entrypoint.sh b/docker/docker_entrypoint.sh index cc0c2fad..dbc204d3 100644 --- a/docker/docker_entrypoint.sh +++ b/docker/docker_entrypoint.sh @@ -37,12 +37,12 @@ function version_gt() { echo "check docker images update..." echo "检查docker镜像更新更新..." if type jq >/dev/null 2>&1; then - updateContext=$(getDockerImageLabel | jq .UPDATE_CONTEXT) - export NOTIFY_CONTEXT=$updateContext - version=$(getDockerImageLabel | jq .VERSION) + labels=$(getDockerImageLabel) + export NOTIFY_CONTENT=$(echo $labels | jq .UPDATE_CONTENT) + version=$(echo $labels | jq .VERSION) else #第一版通知逻辑无法包含在上面判断里面,镜像构建好直接开启通知 - export NOTIFY_CONTEXT="更新内容较多,重新阅读仓库Readme(),更新镜像并更新配置后使用。" + export NOTIFY_CONTENT="更新内容较多,重新阅读仓库Readme(),更新镜像并更新配置后使用。" cd /scripts/docker node notify_docker_user.js fi diff --git a/docker/notify_docker_user.js b/docker/notify_docker_user.js index 4516f663..55916d06 100644 --- a/docker/notify_docker_user.js +++ b/docker/notify_docker_user.js @@ -1,7 +1,9 @@ const notify = require('../sendNotify'); function image_update_notify() { - notify.sendNotify("⚠️Docker镜像版本更新通知⚠️", process.env.NOTIFY_CONTEXT) + if (process.env.NOTIFY_CONTENT) { + notify.sendNotify("⚠️Docker镜像版本更新通知⚠️", process.env.NOTIFY_CONTENT) + } } image_update_notify(); \ No newline at end of file From a50cb831f731216a990cf0a0d0d73ba3dfbcb173 Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 15:51:57 +0800 Subject: [PATCH 08/15] =?UTF-8?q?=E5=AE=8C=E5=96=84log=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/default_task.sh | 4 ++++ docker/docker_entrypoint.sh | 13 +++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/docker/default_task.sh b/docker/default_task.sh index 5628f727..d8bccffe 100644 --- a/docker/default_task.sh +++ b/docker/default_task.sh @@ -30,6 +30,7 @@ if type jq >/dev/null 2>&1; then version=$(echo $labels | jq .VERSION) else # 第一版通知逻辑无法包含在上面判断里面,镜像构建好直接开启通知 + echo "当前容版版本过旧,发送镜像更新通知" export NOTIFY_CONTEXT="更新内容较多,重新阅读仓库Readme(),更新镜像并更新配置后使用。" cd /scripts/docker node notify_docker_user.js @@ -38,11 +39,13 @@ fi #通知通知用户更新镜像 if [ ! $BUILD_VERSION ]; then if [ $version ]; then + echo "当前容器版本为空,dockerhub仓库版本为$version,发送通知" cd /scripts/docker node notify_docker_user.js fi else if version_gt $version $BUILD_VERSION; then + echo "当前容器版本为$BUILD_VERSION,dockerhub仓库版本为$version,发送通知" cd /scripts/docker node notify_docker_user.js fi @@ -98,6 +101,7 @@ fi # 判断最后要加载的定时任务是否包含默认定时任务,不包含的话就加进去 if [ $(grep -c "default_task.sh" $mergedListFile) -eq '0' ]; then + echo "合并后的定时任务文件,未包含必须的默认定时任务,增加默认定时任务..." echo -e >>$mergedListFile echo "52 */1 * * * sh /scripts/docker/default_task.sh |ts >> /scripts/logs/default_task.log 2>&1" >>$mergedListFile fi diff --git a/docker/docker_entrypoint.sh b/docker/docker_entrypoint.sh index dbc204d3..ebc1e8ff 100644 --- a/docker/docker_entrypoint.sh +++ b/docker/docker_entrypoint.sh @@ -41,19 +41,26 @@ if type jq >/dev/null 2>&1; then export NOTIFY_CONTENT=$(echo $labels | jq .UPDATE_CONTENT) version=$(echo $labels | jq .VERSION) else - #第一版通知逻辑无法包含在上面判断里面,镜像构建好直接开启通知 - export NOTIFY_CONTENT="更新内容较多,重新阅读仓库Readme(),更新镜像并更新配置后使用。" + # 第一版通知逻辑无法包含在上面判断里面,镜像构建好直接开启通知 + echo "Current container version is too old, send update notification" + echo "当前版本过旧,发送镜像更新通知" + export NOTIFY_CONTEXT="更新内容较多,重新阅读仓库Readme(),更新镜像并更新配置后使用。" cd /scripts/docker node notify_docker_user.js fi + #通知通知用户更新镜像 if [ ! $BUILD_VERSION ]; then if [ $version ]; then + echo "Current container version is empty, dockerhub lastet $version, send update notification" + echo "当前容器版本为空,dockerhub仓库版本为$version,发送更新通知" cd /scripts/docker node notify_docker_user.js fi else if version_gt $version $BUILD_VERSION; then + echo "Current container version $BUILD_VERSION, dockerhub lastet version $version, send update notification" + echo "当前容器版本为$BUILD_VERSION,dockerhub仓库版本为$version,发送通知" cd /scripts/docker node notify_docker_user.js fi @@ -113,6 +120,8 @@ fi # 判断最后要加载的定时任务是否包含默认定时任务,不包含的话就加进去 if [ $(grep -c "default_task.sh" $mergedListFile) -eq '0' ]; then + echo "Merged crontab task file,the required default task is not included, append default task..." + echo "合并后的定时任务文件,未包含必须的默认定时任务,增加默认定时任务..." echo -e >>$mergedListFile echo "52 */1 * * * sh /scripts/docker/default_task.sh |ts >> /scripts/logs/default_task.log 2>&1" >>$mergedListFile fi From b1a44d776079c78e57480d67238d5aabbd7f5b8d Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 16:09:37 +0800 Subject: [PATCH 09/15] =?UTF-8?q?shell=E8=84=9A=E6=9C=AC=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/default_task.sh | 5 +++-- docker/docker_entrypoint.sh | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docker/default_task.sh b/docker/default_task.sh index d8bccffe..da61c000 100644 --- a/docker/default_task.sh +++ b/docker/default_task.sh @@ -25,9 +25,10 @@ function version_gt() { #######################################通知用户更新镜像-start##################################################################### echo "检查docker镜像更新更新..." if type jq >/dev/null 2>&1; then + echo "获取dockerhub仓库镜像labels信息..." labels=$(getDockerImageLabel) - export NOTIFY_CONTENT=$(echo $labels | jq .UPDATE_CONTENT) - version=$(echo $labels | jq .VERSION) + export NOTIFY_CONTENT=$(echo $labels | jq -r .UPDATE_CONTENT) + version=$(echo $labels | jq -r .VERSION) else # 第一版通知逻辑无法包含在上面判断里面,镜像构建好直接开启通知 echo "当前容版版本过旧,发送镜像更新通知" diff --git a/docker/docker_entrypoint.sh b/docker/docker_entrypoint.sh index ebc1e8ff..9b818252 100644 --- a/docker/docker_entrypoint.sh +++ b/docker/docker_entrypoint.sh @@ -37,9 +37,11 @@ function version_gt() { echo "check docker images update..." echo "检查docker镜像更新更新..." if type jq >/dev/null 2>&1; then + echo "get dockerhub repo images labels..." + echo "获取dockerhub仓库镜像labels信息..." labels=$(getDockerImageLabel) - export NOTIFY_CONTENT=$(echo $labels | jq .UPDATE_CONTENT) - version=$(echo $labels | jq .VERSION) + export NOTIFY_CONTENT=$(echo $labels | jq -r .UPDATE_CONTENT) + version=$(echo $labels | jq -r .VERSION) else # 第一版通知逻辑无法包含在上面判断里面,镜像构建好直接开启通知 echo "Current container version is too old, send update notification" From fd41f7b204223da382d6a17fa55e063ec5083246 Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 16:56:36 +0800 Subject: [PATCH 10/15] =?UTF-8?q?=F0=9F=93=96=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=85=8D=E7=BD=AEexample=E5=92=8C=E6=96=87=E6=A1=A3=E8=AF=B4?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/Dockerfile | 21 +++-- docker/Readme.md | 76 +++++-------------- .../{docker-compose.yml => custom-append.yml} | 16 +--- docker/example/custom-overwrite.yml | 44 +++++++++++ docker/example/default.yml | 42 ++++++++++ ...son => jd_scripts.custom-append.syno.json} | 4 +- .../jd_scripts.custom-overwrite.syno.json | 69 +++++++++++++++++ docker/example/jd_scripts.syno.json | 2 +- docker/example/multi.yml | 51 +++++++++++++ docker/example/use-tg-bot.yml | 40 ++++++++++ 10 files changed, 287 insertions(+), 78 deletions(-) rename docker/example/{docker-compose.yml => custom-append.yml} (68%) create mode 100644 docker/example/custom-overwrite.yml create mode 100644 docker/example/default.yml rename docker/example/{jd_scripts.my_crontab_list.syno.json => jd_scripts.custom-append.syno.json} (92%) create mode 100644 docker/example/jd_scripts.custom-overwrite.syno.json create mode 100644 docker/example/multi.yml create mode 100644 docker/example/use-tg-bot.yml diff --git a/docker/Dockerfile b/docker/Dockerfile index 5615cde9..0e01fb04 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,23 +1,32 @@ FROM alpine -MAINTAINER Akira +LABEL AUTHOR="Akira " \ + VERSION=0.1.2 \ + UPDATE_CONTENT="更新内容较多,重新阅读仓库[Readme](https://github.com/lxk0301/jd_scripts/tree/master/docker),更新镜像并更新配置后使用。" RUN set -ex \ && apk update && apk upgrade\ - && apk add --no-cache tzdata moreutils git nodejs npm\ + && apk add --no-cache tzdata moreutils git nodejs npm curl jq\ && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone -RUN git clone https://github.com/lxk0301/jd_scripts /scripts \ +RUN git clone https://github.com/iouAkira/jd_scripts /scripts \ && cd /scripts \ + && git checkout dev \ && mkdir logs \ && npm install \ && cd /tmp \ && npm install request -ENV CRONTAB_LIST_FILE crontab_list_ts.sh +ENV BUILD_VERSION=0.1.2 \ + DEFAULT_LIST_FILE=crontab_list.sh \ + CUSTOM_LIST_MERGE_TYPE=append -RUN crontab /scripts/docker/crontab_list_ts.sh +# github action 构建 +COPY ./docker/docker_entrypoint.sh /usr/local/bin +# 本地构建 +# COPY ./docker_entrypoint.sh /usr/local/bin +# RUN chmod +x /usr/local/bin/docker_entrypoint.sh WORKDIR /scripts -CMD ["node"] +ENTRYPOINT ["docker_entrypoint.sh"] diff --git a/docker/Readme.md b/docker/Readme.md index 7b5d8247..cd1a3f33 100644 --- a/docker/Readme.md +++ b/docker/Readme.md @@ -6,7 +6,14 @@ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` -### 如果需要使用 docker 多个账户独立并发执行定时任务,[参考这里](https://github.com/iouAkira/scripts/blob/patch-1/docker/docker%E5%A4%9A%E8%B4%A6%E6%88%B7%E4%BD%BF%E7%94%A8%E7%8B%AC%E7%AB%8B%E5%AE%B9%E5%99%A8%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E.md#%E4%BD%BF%E7%94%A8%E6%AD%A4%E6%96%B9%E5%BC%8F%E8%AF%B7%E5%85%88%E7%90%86%E8%A7%A3%E5%AD%A6%E4%BC%9A%E4%BD%BF%E7%94%A8docker%E5%8A%9E%E6%B3%95%E4%B8%80%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F) +### 如果需要使用 docker 多个账户独立并发执行定时任务,[参考这里](https://github.com/iouAkira/scripts/blob/patch-1/docker/docker%E5%A4%9A%E8%B4%A6%E6%88%B7%E4%BD%BF%E7%94%A8%E7%8B%AC%E7%AB%8B%E5%AE%B9%E5%99%A8%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E.md#%E4%BD%BF%E7%94%A8%E6%AD%A4%E6%96%B9%E5%BC%8F%E8%AF%B7%E5%85%88%E7%90%86%E8%A7%A3%E5%AD%A6%E4%BC%9A%E4%BD%BF%E7%94%A8docker%E5%8A%9E%E6%B3%95%E4%B8%80%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F) + +⚠️⚠️⚠️2020-12-11更新镜像启动方式,虽然兼容旧版的运行启动方式,但是强烈建议更新镜像和配置后使用 +- 更新后`commad:`指令配置不再需要 +- 更新后可以使用自定义任务文件追加在默任务文件之后,比以前的完全覆盖多一个选择 +- - 新的自定两个环境变量为 `CUSTOM_LIST_MERGE_TYPE`:自定文件的生效方式可选值为`append`,`overwrite`默认为`append` ; `CUSTOM_LIST_FILE`: 自定义文件的名字 +- 更新镜像增减镜像更新通知,以后镜像如果更新之后,会通知用户更新 + > 注⚠️:前提先理解学会使用这下面的教程 ### 创建一个目录`jd_scripts`用于存放备份配置等数据,迁移重装的时候只需要备份整个jd_scripts目录即可 需要新建的目录文件结构参考如下: @@ -19,63 +26,18 @@ jd_scripts └── docker-compose.yml ``` - `jd_scripts/logs`建一个空文件夹就行 -- `jd_scripts/docker-compose.yml` 参考内容如下: +- `jd_scripts/docker-compose.yml` 参考内容如下(自己动手能力不行搞不定请使用默认配置): +- - [使用默认配置用这个](./example/default.yml) +- - [使用自定义任务追加到默认任务之后用这个](./example/custom-append.yml) +- - [使用自定义任务覆盖默认任务用这个](./example/custom-overwrite.yml) +- - [使用TG机器人交互的用这个](./example/use-tg-bot.yml) +- - [一次启动多容器并发用这个](./example/multi.yml) +- - [使用群晖默认配置用这个](./example/jd_scripts.syno.json) +- - [使用群晖自定义任务追加到默认任务之后用这个](./example/jd_scripts.custom-append.syno.json) +- - [使用群晖自定义任务覆盖默认任务用这个](./example/jd_scripts.custom-overwrite.syno.json) - `jd_scripts/docker-compose.yml`里面的环境变量(`environment:`)配置[参考这里](https://github.com/lxk0301/jd_scripts/blob/master/githubAction.md#%E4%B8%8B%E6%96%B9%E6%8F%90%E4%BE%9B%E4%BD%BF%E7%94%A8%E5%88%B0%E7%9A%84-secrets%E5%85%A8%E9%9B%86%E5%90%88) -```yaml -jd_scripts: -jd_scripts: - image: akyakya/jd_scripts - container_name: jd_scripts - restart: always - #如果需要自定定义定时任务的需要自己写好`my_crontab_list.sh`文件 ,取消下面的挂载注释 ,通过 `volumes`挂载进去。 - volumes: - # - ./my_crontab_list.sh:/scripts/docker/my_crontab_list.sh - - ./logs:/scripts/logs - tty: true - environment: - # 注意环境变量填写值的时候一律不需要引号(""或者'')下面这些只是事例,根据自己的需求增加删除 - #jd cookies - # 例: JD_COOKIE=pt_key=XXX;pt_pin=XXX - - JD_COOKIE= - #微信server酱通 - - PUSH_KEY= - #Bark App通知 - - BARK_PUSH= - #telegram机器人通知 - - TG_BOT_TOKEN= - - TG_USER_ID= - #钉钉机器人通知 - - DD_BOT_TOKEN= - - DD_BOT_SECRET= - #京东种豆得豆 - - PLANT_BEAN_SHARECODES= - #京东农场 - # 例: FRUITSHARECODES=京东农场的互助码 - - FRUITSHARECODES= - #京东萌宠 - # 例: PETSHARECODES=东东萌宠的互助码 - - PETSHARECODES= - # 宠汪汪的喂食数量 - - JOY_FEED_COUNT= - #京小超 - # - SUPERMARKET_SHARECODES= - #兑换多少数量的京豆(20,或者1000京豆,或者其他奖品的文字) - # 例: MARKET_COIN_TO_BEANS=1000 - - MARKET_COIN_TO_BEANS= - #是否开启debug模式打印日志 - # 例: JD_DEBUG=false - - JD_DEBUG= - #如果使用自定义定时任务,取消下面一行的注释 - #- CRONTAB_LIST_FILE=my_crontab_list.sh - command: - - /bin/sh - - -c - - | - #crontab /scripts/docker/my_crontab_list.sh #如果挂载了自定义任务文件,取消此条注释即可 - crond - git -C /scripts/ pull - node -``` + + - `jd_scripts/my_crontab_list.sh` 参考内容如下,自己根据需要调整增加删除,不熟悉用户推荐使用默认配置: ```shell diff --git a/docker/example/docker-compose.yml b/docker/example/custom-append.yml similarity index 68% rename from docker/example/docker-compose.yml rename to docker/example/custom-append.yml index 93daae3b..f2618e40 100644 --- a/docker/example/docker-compose.yml +++ b/docker/example/custom-append.yml @@ -2,9 +2,8 @@ jd_scripts: image: akyakya/jd_scripts container_name: jd_scripts restart: always - #如果需要自定定义定时任务的需要自己写好`my_crontab_list.sh`文件 ,取消下面的挂载注释 ,通过 `volumes`挂载进去。 volumes: - # - ./my_crontab_list.sh:/scripts/docker/my_crontab_list.sh + - ./my_crontab_list.sh:/scripts/docker/my_crontab_list.sh - ./logs:/scripts/logs tty: true environment: @@ -40,13 +39,6 @@ jd_scripts: #是否开启debug模式打印日志 # 例: JD_DEBUG=false - JD_DEBUG= - #如果使用自定义定时任务,取消下面一行的注释 - #- CRONTAB_LIST_FILE=my_crontab_list.sh - command: - - /bin/sh - - -c - - | - #crontab /scripts/docker/my_crontab_list.sh #如果挂载了自定义任务文件,取消此条注释即可 - crond - git -C /scripts/ pull - node + #使用自定义定任务追加默认任务之后,上面volumes挂载之后这里配置对应的文件名 + - CUSTOM_LIST_FILE=my_crontab_list.sh + diff --git a/docker/example/custom-overwrite.yml b/docker/example/custom-overwrite.yml new file mode 100644 index 00000000..5099b9fd --- /dev/null +++ b/docker/example/custom-overwrite.yml @@ -0,0 +1,44 @@ +jd_scripts: + image: akyakya/jd_scripts + container_name: jd_scripts + restart: always + volumes: + - ./my_crontab_list.sh:/scripts/docker/my_crontab_list.sh + - ./logs:/scripts/logs + tty: true + environment: + # 注意环境变量填写值的时候一律不需要引号(""或者'')下面这些只是事例,根据自己的需求增加删除 + #jd cookies + # 例: JD_COOKIE=pt_key=XXX;pt_pin=XXX + - JD_COOKIE= + #微信server酱通 + - PUSH_KEY= + #Bark App通知 + - BARK_PUSH= + #telegram机器人通知 + - TG_BOT_TOKEN= + - TG_USER_ID= + #钉钉机器人通知 + - DD_BOT_TOKEN= + - DD_BOT_SECRET= + #京东种豆得豆 + - PLANT_BEAN_SHARECODES= + #京东农场 + # 例: FRUITSHARECODES=京东农场的互助码 + - FRUITSHARECODES= + #京东萌宠 + # 例: PETSHARECODES=东东萌宠的互助码 + - PETSHARECODES= + # 宠汪汪的喂食数量 + - JOY_FEED_COUNT= + #京小超 + # - SUPERMARKET_SHARECODES= + #兑换多少数量的京豆(20,或者1000京豆,或者其他奖品的文字) + # 例: MARKET_COIN_TO_BEANS=1000 + - MARKET_COIN_TO_BEANS= + #是否开启debug模式打印日志 + # 例: JD_DEBUG=false + - JD_DEBUG= + #使用自定义定任务追加默认任务之后,上面volumes挂载之后这里配置对应的文件名,和自定义文件使用方式为overwrite + - CUSTOM_LIST_FILE=my_crontab_list.sh + - CUSTOM_LIST_MERGE_TYPE=overwrite diff --git a/docker/example/default.yml b/docker/example/default.yml new file mode 100644 index 00000000..bdc6c60b --- /dev/null +++ b/docker/example/default.yml @@ -0,0 +1,42 @@ +jd_scripts: + image: akyakya/jd_scripts + container_name: jd_scripts + restart: always + volumes: + - ./logs:/scripts/logs + tty: true + environment: + # 注意环境变量填写值的时候一律不需要引号(""或者'')下面这些只是事例,根据自己的需求增加删除 + #jd cookies + # 例: JD_COOKIE=pt_key=XXX;pt_pin=XXX + - JD_COOKIE= + #微信server酱通 + - PUSH_KEY= + #Bark App通知 + - BARK_PUSH= + #telegram机器人通知 + - TG_BOT_TOKEN= + - TG_USER_ID= + #钉钉机器人通知 + - DD_BOT_TOKEN= + - DD_BOT_SECRET= + #京东种豆得豆 + - PLANT_BEAN_SHARECODES= + #京东农场 + # 例: FRUITSHARECODES=京东农场的互助码 + - FRUITSHARECODES= + #京东萌宠 + # 例: PETSHARECODES=东东萌宠的互助码 + - PETSHARECODES= + # 宠汪汪的喂食数量 + - JOY_FEED_COUNT= + #京小超 + # - SUPERMARKET_SHARECODES= + #兑换多少数量的京豆(20,或者1000京豆,或者其他奖品的文字) + # 例: MARKET_COIN_TO_BEANS=1000 + - MARKET_COIN_TO_BEANS= + #是否开启debug模式打印日志 + # 例: JD_DEBUG=false + - JD_DEBUG= + + diff --git a/docker/example/jd_scripts.my_crontab_list.syno.json b/docker/example/jd_scripts.custom-append.syno.json similarity index 92% rename from docker/example/jd_scripts.my_crontab_list.syno.json rename to docker/example/jd_scripts.custom-append.syno.json index 2fddb6b1..e6fdce53 100644 --- a/docker/example/jd_scripts.my_crontab_list.syno.json +++ b/docker/example/jd_scripts.custom-append.syno.json @@ -1,7 +1,7 @@ { "cap_add" : [], "cap_drop" : [], - "cmd" : "/bin/sh -c 'crontab /scripts/docker/my_crontab_list.sh && crond && node'", + "cmd" : "", "cpu_priority" : 50, "devices" : null, "enable_publish_all_ports" : false, @@ -25,7 +25,7 @@ "value" : "" }, { - "key" : "CRONTAB_LIST_FILE", + "key" : "CUSTOM_LIST_FILE", "value" : "my_crontab_list.sh" } ], diff --git a/docker/example/jd_scripts.custom-overwrite.syno.json b/docker/example/jd_scripts.custom-overwrite.syno.json new file mode 100644 index 00000000..d75581f8 --- /dev/null +++ b/docker/example/jd_scripts.custom-overwrite.syno.json @@ -0,0 +1,69 @@ +{ + "cap_add" : [], + "cap_drop" : [], + "cmd" : "", + "cpu_priority" : 50, + "devices" : null, + "enable_publish_all_ports" : false, + "enable_restart_policy" : true, + "enabled" : true, + "env_variables" : [ + { + "key" : "PATH", + "value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + }, + { + "key" : "CDN_JD_DAILYBONUS", + "value" : "true" + }, + { + "key" : "JD_COOKIE", + "value" : "pt_key=xxx;pt_pin=xxx;" + }, + { + "key" : "PUSH_KEY", + "value" : "" + }, + { + "key" : "CUSTOM_LIST_FILE", + "value" : "my_crontab_list.sh" + }, + { + "key" : "CUSTOM_LIST_MERGE_TYPE", + "value" : "overwrite" + } + ], + "exporting" : false, + "id" : "3a2f6f27c23f93bc104585c22569c760cc9ce82df09cdb41d53b491fe1d0341c", + "image" : "akyakya/jd_scripts", + "is_ddsm" : false, + "is_package" : false, + "links" : [], + "memory_limit" : 0, + "name" : "jd_scripts", + "network" : [ + { + "driver" : "bridge", + "name" : "bridge" + } + ], + "network_mode" : "default", + "port_bindings" : [], + "privileged" : false, + "shortcut" : { + "enable_shortcut" : false + }, + "use_host_network" : false, + "volume_bindings" : [ + { + "host_volume_file" : "/docker/jd_scripts/my_crontab_list.sh", + "mount_point" : "/scripts/docker/my_crontab_list.sh", + "type" : "rw" + }, + { + "host_volume_file" : "/docker/jd_scripts/logs", + "mount_point" : "/scripts/logs", + "type" : "rw" + } + ] +} diff --git a/docker/example/jd_scripts.syno.json b/docker/example/jd_scripts.syno.json index 042b6def..61acfd6e 100644 --- a/docker/example/jd_scripts.syno.json +++ b/docker/example/jd_scripts.syno.json @@ -1,7 +1,7 @@ { "cap_add" : null, "cap_drop" : null, - "cmd" : "/bin/sh -c 'crond && node'", + "cmd" : "", "cpu_priority" : 0, "devices" : null, "enable_publish_all_ports" : false, diff --git a/docker/example/multi.yml b/docker/example/multi.yml new file mode 100644 index 00000000..8b2faa59 --- /dev/null +++ b/docker/example/multi.yml @@ -0,0 +1,51 @@ +version: "3" +services: + jd_scripts1: #默认 + image: akyakya/jd_scripts + restart: always + container_name: jd_scripts1 + tty: true + volumes: + - ./logs1:/scripts/logs + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + jd_scripts2: #默认 + image: akyakya/jd_scripts + restart: always + container_name: jd_scripts2 + tty: true + volumes: + - ./logs2:/scripts/logs + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + jd_scripts4: #自定义追加默认之后 + image: akyakya/jd_scripts + restart: always + container_name: jd_scripts4 + tty: true + volumes: + - ./logs4:/scripts/logs + - ./my_crontab_list4.sh:/scripts/docker/my_crontab_list.sh + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + - CUSTOM_LIST_FILE=my_crontab_list.sh + jd_scripts5: #自定义覆盖默认 + image: akyakya/jd_scripts + restart: always + container_name: jd_scripts5 + tty: true + volumes: + - ./logs5:/scripts/logs + - ./my_crontab_list5.sh:/scripts/docker/my_crontab_list.sh + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + - CUSTOM_LIST_FILE=my_crontab_list.sh + - CUSTOM_LIST_MERGE_TYPE=overwrite diff --git a/docker/example/use-tg-bot.yml b/docker/example/use-tg-bot.yml new file mode 100644 index 00000000..87068588 --- /dev/null +++ b/docker/example/use-tg-bot.yml @@ -0,0 +1,40 @@ +jd_scripts: + image: akyakya/jd_scripts:supportbot + container_name: jd_scripts + restart: always + volumes: + - ./logs:/scripts/logs + tty: true + environment: + # 注意环境变量填写值的时候一律不需要引号(""或者'')下面这些只是事例,根据自己的需求增加删除 + #jd cookies + # 例: JD_COOKIE=pt_key=XXX;pt_pin=XXX + - JD_COOKIE= + #微信server酱通 + - PUSH_KEY= + #Bark App通知 + - BARK_PUSH= + #telegram机器人通知 + - TG_BOT_TOKEN= + - TG_USER_ID= + #钉钉机器人通知 + - DD_BOT_TOKEN= + - DD_BOT_SECRET= + #京东种豆得豆 + - PLANT_BEAN_SHARECODES= + #京东农场 + # 例: FRUITSHARECODES=京东农场的互助码 + - FRUITSHARECODES= + #京东萌宠 + # 例: PETSHARECODES=东东萌宠的互助码 + - PETSHARECODES= + # 宠汪汪的喂食数量 + - JOY_FEED_COUNT= + #京小超 + # - SUPERMARKET_SHARECODES= + #兑换多少数量的京豆(20,或者1000京豆,或者其他奖品的文字) + # 例: MARKET_COIN_TO_BEANS=1000 + - MARKET_COIN_TO_BEANS= + #是否开启debug模式打印日志 + # 例: JD_DEBUG=false + - JD_DEBUG= From 4e4a5108dc33eaafbdfc0b363220fba807fdaf32 Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 16:59:42 +0800 Subject: [PATCH 11/15] =?UTF-8?q?=E6=94=B9=E4=B8=BA=E6=A3=80=E6=9F=A5lates?= =?UTF-8?q?t=20tag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/default_task.sh | 2 +- docker/docker_entrypoint.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/default_task.sh b/docker/default_task.sh index da61c000..93050d47 100644 --- a/docker/default_task.sh +++ b/docker/default_task.sh @@ -8,7 +8,7 @@ npm install --prefix /scripts ######################################获取docker构建文件里面的自定义信息方法-start##################################################### function getDockerImageLabel() { repo=akyakya/jd_scripts - imageTag=dev + imageTag=latest token=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repo}:pull" | jq -r '.token') digest=$(curl -s -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/${repo}/manifests/${imageTag}" | jq .config.digest -r) labels=$(curl -s -L -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/${repo}/blobs/$digest" | jq .config.Labels) diff --git a/docker/docker_entrypoint.sh b/docker/docker_entrypoint.sh index 9b818252..38e9900c 100644 --- a/docker/docker_entrypoint.sh +++ b/docker/docker_entrypoint.sh @@ -19,7 +19,7 @@ echo "########################################################################## ######################################获取docker构建文件里面的自定义信息方法-start##################################################### function getDockerImageLabel() { repo=akyakya/jd_scripts - imageTag=dev + imageTag=latest token=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repo}:pull" | jq -r '.token') digest=$(curl -s -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/${repo}/manifests/${imageTag}" | jq .config.digest -r) labels=$(curl -s -L -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/${repo}/blobs/$digest" | jq .config.Labels) From 0c5382ed2f74fdb2da4e8e672acd39c404c8802c Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 17:00:41 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/crontab_list.sh | 2 +- docker/crontab_list_ts.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/crontab_list.sh b/docker/crontab_list.sh index b4ac3948..61e22644 100644 --- a/docker/crontab_list.sh +++ b/docker/crontab_list.sh @@ -1,5 +1,5 @@ #必须要的默认定时任务请勿删除 -52 */1 * * * sh /scripts/docker/default_task.sh |ts >> /scripts/logs/pull.log 2>&1 +52 */1 * * * sh /scripts/docker/default_task.sh |ts >> /scripts/logs/default_task.log 2>&1 # 每3天的23:50分清理一次日志 50 23 */3 * * rm -rf /scripts/logs/*.log diff --git a/docker/crontab_list_ts.sh b/docker/crontab_list_ts.sh index 4c5b8cfb..44cc0c76 100644 --- a/docker/crontab_list_ts.sh +++ b/docker/crontab_list_ts.sh @@ -1,5 +1,5 @@ #必须要的默认定时任务请勿删除 -52 */1 * * * sh /scripts/docker/default_task.sh |ts >> /scripts/logs/pull.log 2>&1 +52 */1 * * * sh /scripts/docker/default_task.sh |ts >> /scripts/logs/default_task.log 2>&1 # 每3天的23:50分清理一次日志 50 23 */3 * * rm -rf /scripts/logs/*.log From 1198410ec0053c1545654ad7fcc0438c23594f77 Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 17:05:35 +0800 Subject: [PATCH 13/15] fix --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 0e01fb04..61d3a5cb 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -25,7 +25,7 @@ ENV BUILD_VERSION=0.1.2 \ COPY ./docker/docker_entrypoint.sh /usr/local/bin # 本地构建 # COPY ./docker_entrypoint.sh /usr/local/bin -# RUN chmod +x /usr/local/bin/docker_entrypoint.sh +RUN chmod +x /usr/local/bin/docker_entrypoint.sh WORKDIR /scripts From 52ef8be7d3d049686a27bc8a7d1df39caa6306bd Mon Sep 17 00:00:00 2001 From: iouAkira Date: Fri, 11 Dec 2020 17:08:59 +0800 Subject: [PATCH 14/15] fix --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 61d3a5cb..474213b2 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -11,7 +11,7 @@ RUN set -ex \ RUN git clone https://github.com/iouAkira/jd_scripts /scripts \ && cd /scripts \ - && git checkout dev \ + && git checkout master \ && mkdir logs \ && npm install \ && cd /tmp \ From b6a11cd7e52a1e8fc25e429069d1895b72606a83 Mon Sep 17 00:00:00 2001 From: Akira Date: Fri, 11 Dec 2020 17:49:43 +0800 Subject: [PATCH 15/15] fix --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 474213b2..c529af5b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -9,7 +9,7 @@ RUN set -ex \ && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone -RUN git clone https://github.com/iouAkira/jd_scripts /scripts \ +RUN git clone https://github.com/lxk0301/jd_scripts /scripts \ && cd /scripts \ && git checkout master \ && mkdir logs \