差異處
這裏顯示兩個版本的差異處。
| 兩邊的前次修訂版 前次修改 下次修改 | 前次修改 | ||
| tech:docker-upgrade [2024/07/26 11:34] – 加上 container_name jonathan | tech:docker-upgrade [2025/12/25 15:57] (目前版本) – [使用 watchtower 自動更新 docker images] jonathan | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== 使用 watchtower 自動更新 docker images ====== | ====== 使用 watchtower 自動更新 docker images ====== | ||
| + | <note important> | ||
| + | **Watchtower Docker API 版本不相容問題** | ||
| + | * 這問題已在 Watchtower GitHub 上被多人回報 | ||
| + | * Issue #2122 - 77+ 人反應相同問題(2025年11月11日開立) | ||
| + | * Issue #2124, #2125, #2126 - 多個重複問題 | ||
| + | * 官方專案狀態:已停止維護超過 2 年(最後更新:2023年) | ||
| + | * 內建的 Docker SDK 版本為 API 1.25(太舊) | ||
| + | * 當 Alpine 升級到 3.23 的 Docker 29 要求最低 API 1.44 就會出現異常 | ||
| + | * 目前 Workaround 方式是改用 nickfedor fork 維護的 images | ||
| + | * 更新 docker-compose.yml 語法< | ||
| + | cp docker-compose.yml docker-compose.yml.backup && \ | ||
| + | sed -i ' | ||
| + | docker-compose down watchtower && \ | ||
| + | docker-compose up -d watchtower | ||
| + | </ | ||
| + | </ | ||
| + | ==== 定期模式 ==== | ||
| + | * .env 檔加入 THE_HOST < | ||
| + | echo THE_HOST=`hostname` >> .env | ||
| + | </ | ||
| * 在 docker-compose.yml 內 services: 加入 watchtower: Exp < | * 在 docker-compose.yml 內 services: 加入 watchtower: Exp < | ||
| services: | services: | ||
| 行 9: | 行 28: | ||
| watchtower: | watchtower: | ||
| container_name: | container_name: | ||
| - | image: containrrr/ | + | |
| + | image: nickfedor/watchtower | ||
| volumes: | volumes: | ||
| - / | - / | ||
| 行 16: | 行 36: | ||
| - WATCHTOWER_SCHEDULE=0 0 4 * * * # 每天凌晨4點檢查更新 | - WATCHTOWER_SCHEDULE=0 0 4 * * * # 每天凌晨4點檢查更新 | ||
| - WATCHTOWER_CLEANUP=true | - WATCHTOWER_CLEANUP=true | ||
| + | #- WATCHTOWER_NOTIFICATIONS_HOSTNAME=${THE_HOST} | ||
| + | #- WATCHTOWER_NOTIFICATIONS=shoutrrr | ||
| + | #- WATCHTOWER_NOTIFICATION_URL=discord:// | ||
| + | #- WATCHTOWER_NOTIFICATION_TITLE=Watchtower Update | ||
| + | #- WATCHTOWER_NOTIFICATIONS_LEVEL=info | ||
| #- WATCHTOWER_NOTIFICATIONS=slack | #- WATCHTOWER_NOTIFICATIONS=slack | ||
| #- SLACK_HOOK_URL=https:// | #- SLACK_HOOK_URL=https:// | ||
| - | #- WATCHTOWER_NOTIFICATIONS=email | + | #- WATCHTOWER_NOTIFICATIONS=email |
| #- [email protected] | #- [email protected] | ||
| #- [email protected] | #- [email protected] | ||
| 行 25: | 行 50: | ||
| #- [email protected] | #- [email protected] | ||
| #- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=app_password | #- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=app_password | ||
| - | #- WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 | + | #- WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 |
| + | labels: | ||
| + | - " | ||
| + | restart: unless-stopped | ||
| + | </ | ||
| + | <note tip> | ||
| + | |||
| + | * **關於 WATCHTOWER_NOTIFICATION_URL 的設定** | ||
| + | * 假設您的 Discord webhook URL 是:< | ||
| + | * 需要轉換為 Shoutrrr 格式:< | ||
| + | |||
| + | </ | ||
| + | ==== CLI 模式 ==== | ||
| + | * 直接執行 docker cli< | ||
| + | docker run --rm -v / | ||
| + | </ | ||
| + | docker compose run watchtower --run-once | ||
| + | </ | ||
| + | |||
| + | ==== API 模式 ==== | ||
| + | * 參考 - https:// | ||
| + | * 如果不想定期檢查更新, | ||
| + | * Exp. Listen Port:8383 , API-Token: | ||
| + | * docker-compose.yml< | ||
| + | services: | ||
| + | watchtower: | ||
| + | container_name: | ||
| + | #image: containrrr/ | ||
| + | image: nickfedor/ | ||
| + | volumes: | ||
| + | - / | ||
| + | command: --http-api-update | ||
| + | environment: | ||
| + | - TZ=Asia/ | ||
| + | - WATCHTOWER_HTTP_API_TOKEN=mytoken-123456789 | ||
| + | - WATCHTOWER_CLEANUP=true | ||
| + | - WATCHTOWER_NOTIFICATIONS=email | ||
| + | - WATCHTOWER_NOTIFICATIONS_HOSTNAME=${THE_HOST} | ||
| + | - WATCHTOWER_NOTIFICATIONS_HOSTNAME=myserver | ||
| + | - [email protected] | ||
| + | - [email protected] | ||
| + | - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.gmail.com | ||
| + | - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587 | ||
| + | - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=myaccountid | ||
| + | - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=mypassword | ||
| + | - WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 | ||
| labels: | labels: | ||
| - " | - " | ||
| + | ports: | ||
| + | - 8383:8080 | ||
| restart: unless-stopped | restart: unless-stopped | ||
| - | </ | + | </file> |
| + | * 呼叫 API 方式< | ||
| + | curl -H " | ||
| + | </cli> | ||
| ===== 參考網址 ===== | ===== 參考網址 ===== | ||
| * https:// | * https:// | ||
| * https:// | * https:// | ||
| + | * https:// | ||
| {{tag> | {{tag> | ||