Inlägg i blogg av Mats Johannesson
Watchtower är ett program som övervakar dina körandes containers för förändringar av avspeglingen. När du trycker på en uppdatering till ditt Docker-register, upptäcker Watchtower ändringarna och drar ner den nya kopian av avspeglingen. Den startar sedan om container med den avspeglingen med samma startalternativ som originalet.
Låt oss till exempel säga att du har en containerapplikation som heter min-app som körs med en portkoppling på 8090: 3000. Ditt team använder CI/CD för att lansera dagliga uppdateringar av applikationen. När din iteration är klar märker du avspegling och skicka upp denna till registret. Watchtower har konfigurerats för att kontrollera registret var 30: e sekund. När 30-sekunders iterationen är klar, upptäcks förändringarna i avspeglingen och kommer att hämta hem den nya avspeglingen. Watchtower stänger sedan graciöst container för min-app och startar sedan om den med den nya avspeglingen med samma portkopplingar
För att allt detta ska fungera måste Watchtower ha tillgång till Docker API. När du skapar container för Watchtower måste du montera /var/run/docker.sock som en volym till denna.
Arbeta med Watchtower
1. I terminalfönstret, skriv in följande kommando och klicka på Enter:
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower \
-i 30
Kommandot ovan kommer att starta Watchtower i en container, kommunikation kommer att ske mellan container och API för Docker. Växel -i sätter i sekunder cykel för bevakning av förändringar för avspegling.2. Skapa projektkatalog och förflytta dig till denna.
3. Skapa enkel webbsida med namnet index.html:
<html>
<header>
<title>Min webbsida</title>
</header>
<body>
Min webbsida.
</body>
</html>
4. Skapa Dockerfile med följande innehåll:
FROM nginx
COPY index.html /usr/share/nginx/html/index.html
WORKDIR /usr/share/nginx/html
5. Skapa avspegling med följande kommando:
docker build -t <ditt_användarenamn_på_Docker_Hub>/watch_nginx -f Dockerfile .
6. Skicka avspegling till Docker Hub med följande kommando:
docker push <ditt_användarenamn_på_Docker_Hub>/ watch_nginx
7. Starta container med följande kommando:
docker run -d --name min_webb_sida -p 80:80 --restart always <ditt_användarenamn_på_ Docker_Hub>/watch_nginx
8. Öppna webbläsare och surfa till localhost, din sida skall visas.
9. Redigera index.html enligt följande:
<html>
<header>
<title>Min webbsida</title>
</header>
<body>
Min fina webbsida. Gillar du den?
</body>
</html>
10. Skapa ny avspegling med följande kommando:
docker build --no-cache -t <ditt_användarenamn_på_Docker_Hub>/watch_nginx -f Dockerfile .
11. Skicka avspegling till Docker Hub med följande kommando:
docker push <ditt_användarenamn_på_Docker_Hub>/ watch_nginx
12. Återgå till webbläsare, gör refresh på sidan. Efter ca 30 sekunder får du ingen kontakt med sidan. Gör en ny refresh och det nya innehållet visas. Container som startas om med förändringen.