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=