Как да инсталираме Watchtower на Docker с Docker Compose?

Днес ще ви покажа как да инсталираме Watchtower с помоща на Docker и Docker Compose.

Какво е Watchtower?

Watchtower е приложение, което ще наблюдава вашите работещи Docker контейнери и ще следи за промени в изображенията, от които първоначално са стартирани тези контейнери.

Watchtower е докер контейнер, който ще актуализира версията на други работещи контейнери. Той ще свали новото ви изображение, ще затвори елегантно съществуващия ви контейнер и ще го рестартира със същите опции, които са били използвани при първоначалното му разполагане.

Как да инсталираме Watchtower с помощта на Docker-Compose?

За да започнем, ще ни трябва:

Инсталирана версия на Docker и Docker Compose.

Първо актуализирайте системните хранилища:

sudo apt update && sudo apt upgrade

Създайте нова директория watchtower

mkdir watchtower
cd watchtower
vi docker-compose.yml

Във файла docker-compose.yml добавяме следното съдържание:

version: '3'

services:
  watchtower:
    image: containrrr/watchtower
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/timezone:/etc/timezone:bg
    environment:
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_LABEL_ENABLE=true
      - WATCHTOWER_INCLUDE_RESTARTING=true
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

Записваме информацията с натискане на :wq

Стартираме docker-compose файла със:

docker compose up -d

След като командата приключи, можете да проверите, дали докерът се е стартирал:

docker ps

По подразбиране Watchtower ще проверява за актуализации на всеки 24 часа от момента, в който стартирате контейнера Watchtower. Сега ще трябва да добавите етикети към вашите докер контейнери, които искате да актуализирате.

Актуализиране на контейнери

Горният файл за съставяне на докери ще накара Watchtower да работи, но в текущото си състояние той няма да актуализира нито един от съществуващите ви контейнери. Той е безопасен по подразбиране , така че няма да прави нищо друго освен да се актуализира – може би безполезно, но безопасно!

За да актуализирате другите си докер контейнери, трябва да добавите етикет към техния docker-compose.yml , който задава com.centurylinklabs.watchtower.enable=true. След това Watchtower ще вземе този етикет и ще разбере, че трябва да включи този докер контейнер в своите актуализации.

За да бъдат включени вашите контейнери в рутинната актуализация на Watchtowers, ще трябва да добавите един и същ атрибут на етикети към ВСИЧКИ ваши услуги за съставяне на докери, точно както в примера по-долу:

version: '3.6'

services:
    db1:
        image: mysql:5.7
        restart: unless-stopped
        volumes:
          - ./data/mysql:/var/lib/mysql
          - ./config/mysql/conf.d:/etc/mysql/conf.d
        
        environment:
            MYSQL_ROOT_PASSWORD: password
            MYSQL_DATABASE: db1
            MYSQL_USER: db1
            MYSQL_PASSWORD: password
        labels:
          - "com.centurylinklabs.watchtower.enable=true"

След като добавите атрибута labels, просто изчакайте да бъде пуснато ново изображение и в рамките на 24 часа вашият контейнер ще бъде актуализиран, рестартиран и старото изображение премахнато

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: