Docker og Kubernetes for udviklere · Lektion

Applikationer med flere containere og Compose

Orkestrer flere Docker-containere, f.eks. en webapplikation og en database, med Docker Compose til lokal udvikling.

Lektion 3 af 412 trin

Applikationer med flere containere og Compose er en gratis Docker og Kubernetes for udviklere-lektion på CoddyKit. Dette er lektion 3 af 4. 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 Docker og Kubernetes for udviklere, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Docker og Kubernetes for udviklere-kurset indeholder 4 lektioner i alt.

Hvorfor applikationer med flere containere?

I virkelige applikationer har du sjældent kun én komponent. Forestil dig en webapplikation: Du skal bruge en webserver (f.eks. Nginx), en backend-applikation (f.eks. Python Flask) og en database (f.eks. Redis eller PostgreSQL).

Hver af disse komponenter har sine egne afhængigheder og sin egen konfiguration. Det kan hurtigt blive komplekst at administrere dem individuelt og sikre, at de kommunikerer korrekt.

Mød Docker Compose

Docker Compose er et værktøj, der er udviklet til at forenkle processen med at definere og køre Docker-applikationer med flere containere.

  • Du definerer hele applikationens tjenester (containere) i en enkelt YAML-fil.
  • Derefter opretter og starter Compose alle tjenesterne for dig med én enkel kommando.
  • Det er særligt nyttigt i miljøer til lokal udvikling og test.

Compose-YAML-filen

Hjertet i Docker Compose er filen docker-compose.yml. Denne YAML-fil beskriver applikationens tjenester, netværk og volumes.

Den starter typisk med en version-nøgle efterfulgt af hovedsektionen services, hvor du definerer hver container, som udgør din applikation.

Definering af tjenester

Under sektionen services angiver du hver komponent i din applikation. Hver tjeneste svarer til en Docker-container.

Vigtige egenskaber til definition af en tjeneste omfatter:

  • image: Angiver det Docker-image, der skal bruges (f.eks. nginx:latest).
  • build: Angiver stien til en mappe, der indeholder en Dockerfile, som bruges til at bygge et brugerdefineret image.
  • container_name: Et valgfrit, fast navn til din container, så den er nemmere at referere til.

Eksponering og konfiguration af tjenester

Du har ofte brug for at eksponere dine tjenester til værtsmaskinen eller konfigurere dem med miljøvariabler.

  • ports: Knytter porte fra værten til containeren (f.eks. knytter "8080:80" værtens port 8080 til containerens port 80).
  • environment: Videregiver miljøvariabler til containeren (f.eks. DB_HOST: "database").

Disse indstillinger er afgørende for kommunikation og tilpasning.

Forbind dine tjenester

Når du bruger Docker Compose, opretter det automatisk et standardnetværk til din applikation. Alle tjenester, der er defineret i filen docker-compose.yml, tilsluttes dette netværk.

Det gør det muligt for tjenesterne at kommunikere med hinanden ved hjælp af deres tjenestenavne som værtsnavne. En webapplikationstjeneste kan f.eks. oprette forbindelse til en databasetjeneste med navnet redis ved blot at bruge redis som værtsnavn.

Eksempel: Python + Redis

Lad os bygge en simpel applikation med flere containere: en Python Flask-webapplikation, der tæller, hvor mange gange den er blevet besøgt, og gemmer antallet i en Redis-database.

Denne opsætning viser tydeligt, hvordan en 'web'-tjeneste kan interagere med en 'database'-tjeneste i en enkelt Compose-applikation.

Webapplikationens kode og Dockerfile

Her er vores simple Python Flask-applikation (app.py) og dens Dockerfile. Flask-applikationen opretter forbindelse til tjenesten redis, og Dockerfile pakker det hele sammen.

# app.py
import time
import redis
from flask import Flask

app = Flask(__name__)
# Connects to 'redis' service in Compose network
cache = redis.Redis(host='redis', port=6379)

def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)

@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello from CoddyKit! I have been seen {} times.\n'.format(count)

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000, debug=True)

# requirements.txt
# flask
# redis

# Dockerfile
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]

Din første Compose-fil

Denne docker-compose.yml-fil forbinder det hele. Den definerer to tjenester: web (vores Python-applikation, der bygges fra den aktuelle mappe) og redis (som bruger det officielle Redis-image).

Prøv at køre dette eksempel!

version: '3.8'
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

Administration af din Compose-applikation

Hvis du vil starte din applikation med flere containere i detached-tilstand (i baggrunden), skal du gå til mappen, der indeholder din docker-compose.yml-fil og de tilhørende filer, og derefter køre:

docker compose up -d

Hvis du vil se de kørende tjenester og deres status:

docker compose ps

Hvis du vil stoppe og fjerne de containere, netværk og volumes, som Compose har oprettet:

docker compose down

Kontrol af Compose-konfiguration

Se på følgende udsnit af docker-compose.yml:

version: '3.8'
services:
  app:
    build: .
    ports:
      - "8080:80"
  database:
    image: "postgres:13"

Hvilken påstand om denne konfiguration er SAND?

Opsummering: Docker Compose

Du har lært, hvordan Docker Compose forenkler administrationen af applikationer med flere containere i forbindelse med lokal udvikling!

  • Det bruger en docker-compose.yml-fil til at definere alle dine tjenester.
  • Tjenester kan kommunikere med hinanden ved hjælp af deres tjenestenavne på et standardnetværk.
  • Kommandoer som docker compose up og docker compose down administrerer hele din applikationsstak på en enkel måde.

Docker Compose er et vigtigt værktøj til lokale udviklingsopsætninger med flere Docker-containere.

Gratis at komme i gang

Lær Docker og Kubernetes for udviklere 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
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Applikationer med flere containere og Compose” gratis?

Ja — hele teksten til “Applikationer med flere containere og 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 Docker og Kubernetes for udviklere-kurset, skal du opgradere til CoddyKit PRO. Docker og Kubernetes for udviklere-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Applikationer med flere containere og Compose”?

Orkestrer flere Docker-containere, f.eks. en webapplikation og en database, med Docker Compose til lokal udvikling. Du øver dig i Docker og Kubernetes for udviklere 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å Docker og Kubernetes for udviklere?

Der kræves ingen tidligere erfaring. Docker og Kubernetes for udviklere 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 3 af 4.

Hvor lang tid tager lektionen “Applikationer med flere containere og 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 Docker og Kubernetes for udviklere-lektion?

Ja. Alle Docker og Kubernetes for udviklere-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. Udarbejdelse af Dockerfiles til images
  2. Bygning af brugerdefinerede Docker-images
  3. Applikationer med flere containere og Compose
  4. Vedvarende data med Docker-volumener
← Tilbage til Docker og Kubernetes for udviklere