Spring Boot 4-mikrotjenester og REST-API'er · Lektion

Håndtering af containere med Docker Compose

Orkestrér flere Docker-containere til Deres mikrotjenester ved hjælp af Docker Compose.

Lektion 2 af 311 trin

Håndtering af containere med Docker Compose er en gratis Spring Boot 4-mikrotjenester og REST-API'er-lektion på CoddyKit. Dette er lektion 2 af 3. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Spring Boot 4-mikrotjenester og REST-API'er, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Spring Boot 4-mikrotjenester og REST-API'er-kurset indeholder 3 lektioner i alt.

Hvorfor apps med flere containere?

Mikrotjenester er ofte afhængige af flere komponenter. Forestil dig en Spring Boot-applikation, der har brug for en database, en beskedkø eller en anden API-tjeneste.

Hver komponent kører typisk i sin egen Docker-container. Det kan blive komplekst at administrere dem enkeltvis, især under udvikling.

Hvordan starter vi dem alle sammen, sikrer at de kan kommunikere, og administrerer deres livscyklus effektivt? Det er her, Docker Compose kommer ind i billedet!

Introduktion til Docker Compose

Docker Compose er et værktøj til at definere og køre Docker-applikationer med flere containere. I stedet for at administrere hver container separat definerer du alle tjenester i en enkelt, letlæselig fil.

Denne definitionsfil hedder typisk docker-compose.yml. Den bruger YAML-syntaks, som både er letlæselig for mennesker og kan fortolkes af maskiner.

Compose forenkler din arbejdsgang under udviklingen, fordi du kan starte hele din applikationsstak med en enkelt kommando.

Grundlæggende struktur for docker-compose.yml

Filen docker-compose.yml starter med en version, efterfulgt af sektionen services, hvor du definerer hver container som en separat tjeneste.

Hver tjeneste repræsenterer en container, og du kan angive dens image, eksponerede porte, miljøvariabler med mere.

Her er en minimal struktur til en simpel webapp:

version: '3.8'
services:
  webapp:
    image: 'nginx:latest'
    ports:
      - '80:80'

Definition af en webtjeneste

Lad os definere en simpel webtjeneste. Vi bruger det officielle Nginx-image, knytter en port til den og giver den valgfrit et container_name.

Nøglen image angiver, hvilket Docker-image der skal bruges (f.eks. nginx:latest). Nøglen ports knytter værtsmaskinens porte til containerens porte (f.eks. værtsmaskinens port 80 til containerens port 80).

version: '3.8'
services:
  webapp:
    image: 'nginx:latest'
    ports:
      - '80:80'
    container_name: my_nginx_app

Tilføjelse af en databasetjeneste

De fleste applikationer har brug for en database. Lad os tilføje en PostgreSQL-databasetjeneste til vores fil docker-compose.yml.

Vi angiver imaget postgres:13 og indstiller de nødvendige miljøvariabler til legitimationsoplysninger (POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD).

version: '3.8'
services:
  webapp:
    image: 'nginx:latest'
    ports:
      - '80:80'
  database:
    image: 'postgres:13'
    environment:
      POSTGRES_DB: mydatabase
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password

Forbindelse af tjenester (netværk)

Docker Compose opretter automatisk et standardnetværk for alle tjenester, der er defineret i din fil docker-compose.yml.

Tjenester kan kommunikere med hinanden ved hjælp af deres tjenestenavne som værtsnavne. Din webapp kan for eksempel oprette forbindelse til databasen ved at bruge database som værtsnavn og den angivne port (f.eks. 5432 for PostgreSQL).

Dette automatiske netværk gør opsætningen af kommunikation mellem tjenester betydeligt enklere.

Vedvarende data med volumes

Containere er midlertidige; data i dem går tabt, hvis containeren fjernes. For databaser er dette et kritisk problem!

Docker-volumes gør det muligt at bevare data, der genereres af Docker-containere. Vi kan bruge en navngiven volume til at gemme databasens data uden for containeren, så de bevares, hvis containeren genstartes eller fjernes.

version: '3.8'
services:
  database:
    image: 'postgres:13'
    environment:
      POSTGRES_DB: mydatabase
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - db_data:/var/lib/postgresql/data
volumes:
  db_data:

Bygning af brugerdefinerede images

Ofte har du din egen applikationskode (f.eks. en Spring Boot-JAR-fil), der skal bygges ind i et Docker-image. Det kan Docker Compose også håndtere.

I stedet for at angive et image kan du bruge nøglen build og angive mappen, der indeholder din Dockerfile.

Compose bygger derefter dit brugerdefinerede image, før tjenesten startes. Det ser sådan ud:

# docker-compose.yml
version: '3.8'
services:
  my-app:
    build: ./my-app-dir
    ports:
      - '8080:8080'

# my-app-dir/Dockerfile
FROM openjdk:17-jdk-slim
COPY target/my-app.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]

Vigtige Docker Compose-kommandoer

Når din docker-compose.yml er klar, er nogle få kommandoer nødvendige for at administrere din applikationsstak:

  • docker compose up: Bygger (om nødvendigt) og starter alle tjenester. Brug -d til frakoblet tilstand.
  • docker compose down: Stopper og fjerner containere, netværk og eventuelt volumes.
  • docker compose ps: Viser alle kørende tjenester, der er defineret i Compose-filen.
  • docker compose logs: Viser logoutput fra tjenester.

Husk at køre disse kommandoer i den mappe, hvor filen docker-compose.yml ligger.

Hurtigt tjek: Det vigtigste i Compose

Forestil dig en fil docker-compose.yml, der definerer to tjenester: web og db.

Hvilke af følgende udsagn om, hvordan disse tjenester kommunikerer og gemmer data, er generelt SANDE?

Opsummering: Din kraftfulde løsning med flere containere

Tillykke! Du har lært, hvordan Docker Compose gør det enklere at administrere applikationer med flere containere.

Du kan nu definere hele din applikationsstak i en enkelt fil, docker-compose.yml, inklusive webtjenester, databaser og brugerdefinerede images.

Dette værktøj er utroligt nyttigt til lokal udvikling og test af mikrotjenester, fordi du kan starte hele dit miljø med blot én kommando. Bliv ved med at øve dig!

Gratis at komme i gang

Lær Java med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
24
Lektioner
93

Ofte stillede spørgsmål

Er lektionen “Håndtering af containere med Docker Compose” gratis?

Ja — hele teksten til “Håndtering af containere med Docker Compose” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Spring Boot 4-mikrotjenester og REST-API'er-kurset, skal du opgradere til CoddyKit PRO. Spring Boot 4-mikrotjenester og REST-API'er-kurset indeholder 3 lektioner i alt.

Hvad lærer jeg i “Håndtering af containere med Docker Compose”?

Orkestrér flere Docker-containere til Deres mikrotjenester ved hjælp af Docker Compose. Du øver dig i Spring Boot 4-mikrotjenester og REST-API'er med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Spring Boot 4-mikrotjenester og REST-API'er?

Der kræves ingen tidligere erfaring. Spring Boot 4-mikrotjenester og REST-API'er på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 3.

Hvor lang tid tager lektionen “Håndtering af containere med Docker Compose”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Spring Boot 4-mikrotjenester og REST-API'er-lektion?

Ja. Alle Spring Boot 4-mikrotjenester og REST-API'er-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Dockerisering af Spring Boot-applikationer
  2. Håndtering af containere med Docker Compose
  3. Begreber inden for containerorkestrering
← Tilbage til Spring Boot 4-mikrotjenester og REST-API'er