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.
Oppgave 1 - Sett opp Nginx med Docker Compose
Lag en docker-compose.yml som kjører en Nginx-webserver:
- Lag en ny mappe og opprett filen
docker-compose.yml - Definer en tjeneste med
image: nginx:latestpå port 80 - Kjør
docker compose up -d - Besøk
http://localhosti nettleseren
Oppgave 2 - Legg til en tjeneste
Utvid docker-compose.yml fra oppgave 1 med en ekstra tjeneste. For eksempel:
- Uptime Kuma på port 3001
- Grafana på port 3000
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