Docker som automatisering

Skip to content

Docker forenkler utrulling av applikasjoner. I stedet for å installere og konfigurere programvare manuelt på en server, definerer du alt i konfigurasjonsfiler. Resultatet er reproduserbart, portabelt og raskt å sette opp.

Hva er Docker Compose?

Med Docker Compose definerer du flere tjenester i én fil (docker-compose.yml). Hver tjeneste er en container med sin egen konfigurasjon.

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"

Én kommando setter opp alt:

docker compose up -d

Trenger du å flytte tjenesten til en annen server? Kopier filen og kjør samme kommando. Alt er identisk.

Hvorfor er dette automatisering?

Tenk på forskjellen:

Manuelt oppsett Med Docker Compose
Installer Nginx manuelt image: nginx:latest
Konfigurer porter ports: "80:80"
Installer Grafana manuelt image: grafana/grafana:latest
Dokumenter alle stegene Alt er dokumentert i .yml-filen
Gjenta alt på neste server docker compose up -d

Docker Compose-filen er dokumentasjonen. Den beskriver nøyaktig hvilke tjenester som kjører, hvilke porter de bruker og hvordan de er konfigurert.

Nyttige Docker-kommandoer

Kommando Hva den gjør
docker compose up -d Starter alle tjenester i bakgrunnen
docker compose down Stopper og fjerner alle containere
docker compose logs -f Følger loggene i sanntid
docker compose pull Henter siste versjon av alle images
docker compose restart Restarter alle tjenester
docker ps Viser kjørende containere

Volumes: Lagre data utenfor containeren

Containere er midlertidige. Hvis du sletter en container, forsvinner alt innholdet. For å beholde data bruker vi volumes:

services:
  database:
    image: postgres:16
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: hemmelig
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

Her lagres databasefilene i et volume kalt db-data. Selv om du sletter og oppretter containeren på nytt, er dataene fortsatt der.

Oppdatering av tjenester

Å oppdatere en Docker-tjeneste er enkelt:

# Hent siste versjon
docker compose pull

# Restart med ny versjon
docker compose up -d

Sammenlign dette med å oppdatere manuelt installert programvare, der du kanskje må laste ned, konfigurere, og håpe at ingenting går i stykker.

Easy Oppgave 1 - Sett opp Nginx med Docker Compose

Lag en docker-compose.yml som kjører en Nginx-webserver:

  1. Lag en ny mappe og opprett filen docker-compose.yml
  2. Definer en tjeneste med image: nginx:latest på port 80
  3. Kjør docker compose up -d
  4. Besøk http://localhost i nettleseren

Medium Oppgave 2 - Legg til en tjeneste

Utvid docker-compose.yml fra oppgave 1 med en ekstra tjeneste. For eksempel:

Start alt med docker compose up -d og se at begge tjenestene kjører samtidig.

Oppsummering

  • Docker Compose lar deg definere flere tjenester i én fil
  • Compose-filen er både konfigurasjon og dokumentasjon
  • Volumes lagrer data utenfor containeren slik at den overlever restarter
  • Oppdatering er docker compose pull + docker compose up -d
  • Docker gjør det enkelt å flytte tjenester mellom servere