Computer Science

What is watchtower?

2023-10-20 1 min read
一個可以全自動幫你升級到最新 image 的工具 WatchTower

官方文件 https://containrrr.github.io/watchtower/

介紹

WatchTower 啓動後,會開始幫你監控機器上所有正在執行的 container,每隔一段時間發現有新的 image 後,它就會幫你下載最新 image 並且使用你當初建立該container 時的相同環境設定去幫你重新啓動容器。

開啟 WatchTower

接下來會介紹兩個方式開啟 WatchTower:

docker 開啟 WatchTower

docker run -d \
  --name watchtower \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower

docker compose 開啟 WatchTower

  • 基礎版 (單純開啟 watchtower)
version: '1.0'

services:
  nginx:
    image: nginx
    container_name: nginx
    ports:
      - 80:80
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

networks:
  site:
  • 參考詳細版 (包含建立 docker container website_frontend 和 website_backend)
version: '1.0'

services:
  nginx:
    build: .
    container_name: nginx
    restart: always
    environment:
      - TZ=Asia/Taipei
    volumes:
      - ./site:/var/www/html
      - ./nginx:/etc/nginx/conf.d
      - ./nginx/ssl/:/etc/nginx/ssl/:ro
      - ./nginx/log:/var/log/nginx
    ports:
      - 80:80
      - 443:443
      - 1337:1337
    networks:
      - site

  website_frontend:
    image: [The-image-on-the-docker-hub-need-to-use:${MODE}]
    container_name: website_frontend
    restart: always
    expose:
      - 3000
    networks:
      - site

  website_backend:
    image: [The-image-on-the-docker-hub-need-to-use:${MODE}]
    container_name: website_backend
    restart: always
    environment:
      - PUBLIC_URL=[]
    expose:
      - 1337
    volumes:
      - ./website_backend/.backend_env:/opt/app/.env
      - ./website_backend/database/:/opt/app/.tmp/
      - ./website_backend/media/:/opt/app/public/uploads
    networks:
      - site
    # 設置日誌
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 30 website_frontend website_backend

networks:
  site:

進階設置指令

← Posts
meow~