教學 01 - 如何讓 render.com 提供的機器不睡眠

使用 heroku、render.com 等平台的免費機器,基本上都會自動睡眠.

前言

祝大家新年快樂 !!!

今天是初六,也休息一陣子了,覺得有點廢。

主要是因為大四時擔任宿舍網路會長時製作的 LINE-BOT 上線在 heroku,但是 2022/12 已經公告說他們要開始收錢了。於是我就將 LINE-BOT 的伺服器轉移到 render.com 平台。

那在轉移時有製作一個工具。就是要不間斷的去呼叫免費平台(類似 heroku.com、render.com)。

就是要讓機器永遠不睡眠 ! 操爆它 (X)

統整做了三件事:

  1. 運用 Python 定時呼叫小應用的網址
  2. 利用 Docker 彈性系統參數
  3. 利用 Docker Compose 定時呼叫多個平台

本篇不是教你怎麼做這個工具,是教你如何用。

所以會從 2. 來教你怎麼做 !

利用 Docker 來使用工具

工具只需要透過 Docker 就可以執行囉 !

範例如下:範例下方還有部分說明唷 !

**** 記得要先建立一個 schedule.log 檔案。

1
2
3
4
5
6
7
8
docker run -d \
--restart always \
--name wakeup-render \
-e URL=https://yourwebsite.domain.com/ \
-e APSCHEDULER_DAY_OF_WEEK=mon-fri \
-e APSCHEDULER_MINUTE=*/10 \
-v /Users/yen/Desktop/schedule.log:/app/scheduler.log \
chunyenc/wakeup-machine
  • --restart 若重開機將自動執行
  • --name container 的名稱
  • -e 環境變數
    • URL 是你要呼叫的網址
    • APSCHEDULER_DAY_OF_WEEK 一週裡面哪幾天執行
    • APSCHEDULER_MINUTE 是多少分鐘呼叫一次
  • -v 映射檔案
    • linux 可以使用 pwd 指令來查看目前的絕對路徑
    • schedule.log 就是查看執行 log 的檔案

環境變數列表

環境變數範例值備註
URLhttps://chunyen.xyz呼叫的網址
APSCHEDULER_YEAR
APSCHEDULER_MONTH
APSCHEDULER_DAY
APSCHEDULER_WEEK
APSCHEDULER_DAY_OF_WEEKmon-fri依照範例,設定週一到週五
APSCHEDULER_HOUR
APSCHEDULER_MINUTE*/10依照範例,設定每十分鐘
APSCHEDULER_SECOND

APSCHEDULER 需要參考下面網址來設定 https://apscheduler.readthedocs.io/en/3.x/modules/triggers/cron.html

如果是使用 Docker Compose ..

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
version: '3.9'

services:
  service-one:
    image: chunyenc/wakeup-machine
    environment:
      - URL=https://one.chunyen.xyz
      - APSCHEDULER_MINUTE=*/10
      - APSCHEDULER_HOUR=0-1,5-23
      - APSCHEDULER_DAY_OF_WEEK=mon-fri
    volumes:
      - ./pricing.log:/app/scheduler.log

  service-two:
    image: chunyenc/wakeup-machine
    environment:
      - URL=https://two.chunyen.xyz
      - APSCHEDULER_MINUTE=*/10
      - APSCHEDULER_HOUR=9-23
    volumes:
      - ./linebot.log:/app/scheduler.log
Copyright © CHUN-YEN, CHEN
使用 Hugo 建立
主題 StackJimmy 設計