DevOps-bootcamp · leksjon

Skrive en Compose-fil

Lær YAML-syntaksen for `docker-compose.yml` for å definere tjenester, nettverk og volumer.

Leksjon 2 av 411 trinn

Skrive en Compose-fil er en gratis leksjon i DevOps-bootcamp på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i DevOps-bootcamp, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.

Compose-filen: plantegningen

Velkommen til arbeidet med Docker Compose-filer! docker-compose.yml-filen er plantegningen din for å definere og kjøre Docker-applikasjoner med flere containere.

Den bruker YAML-syntaks til å konfigurere applikasjonens tjenester, nettverk og volumer i én fil.

Skrive en Compose-fil — illustrasjon 1

YAML: en rask oppfriskning

Docker Compose-filer skrives i YAML (YAML Ain't Markup Language). Det er en menneskevennlig standard for serialisering av data.

  • Nøkkel-verdi-par: key: value
  • Lister: Elementer begynner med en bindestrek (- item)
  • Innrykk: Avgjørende for å definere struktur og hierarki. Bruk mellomrom, ikke tabulatorer!

Nøkkelen `version`

Alle docker-compose.yml-filer begynner med en version-nøkkel. Den angir versjonen av Compose-filformatet og hjelper Docker Compose med å forstå hvordan filen skal tolkes.

For de fleste moderne applikasjoner anbefales '3.8' eller en tilsvarende '3.x'-versjon.

version: '3.8'

Definere `services`

Avsnittet services er stedet der du definerer de individuelle containerne (tjenestene) som utgjør applikasjonen. Hver tjeneste representerer en komponent, for eksempel en webserver eller en database.

Under services lister du opp hver tjeneste med et navn du velger.

version: '3.8'
services:
  web:
    # Service configuration goes here
  database:
    # Another service's configuration

Tjenestens `image` og `ports`

Inne i en tjenestedefinisjon angir image hvilket Docker-image som skal brukes (for eksempel nginx:latest). Nøkkelen ports kobler containerporter til porter på vertsmaskinen, slik at de kan nås utenfra.

  • "80:80" kobler port 80 på vertsmaskinen til port 80 i containeren.
version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Tjenestens `volumes`

Nøkkelen volumes i en tjeneste lar deg montere stier fra vertsmaskinen inn i containeren eller bruke navngitte volumer for lagring av data som skal bevares.

Dette eksempelet monterer den lokale katalogen ./app til /usr/src/app i containeren.

version: '3.8'
services:
  app:
    image: my-node-app
    volumes:
      - ./app:/usr/src/app

Tjenestens `environment`-variabler

Bruk nøkkelen environment til å sende miljøvariabler til tjenestens containere. Dette er avgjørende for konfigurasjon som kan endres mellom miljøer (for eksempel tilkoblingsstrenger til databaser).

Variabler kan listes som nøkkel-verdi-par eller i listeformat.

version: '3.8'
services:
  backend:
    image: my-api
    environment:
      - DATABASE_URL=postgres://user:pass@host:5432/db
      - NODE_ENV=development

`networks` og `volumes` på toppnivå

I tillegg til å definere dem i tjenestene kan De også deklarere egendefinerte navngitte volumer og nettverk på toppnivå i filen docker-compose.yml.

Dette gir mer organiserte og gjenbrukbare definisjoner for datalagring og kommunikasjon mellom containere.

version: '3.8'
services:
  # ... service definitions ...

networks:
  my_app_network:
    # custom network configuration

volumes:
  db_data:
    # named volume configuration

Sette alt sammen

Her er et lite eksempel som kombinerer det vi har lært. Det definerer en webtjeneste og en databasetjeneste, og bruker et image, porter og et navngitt volum.

Legg merke til hvordan innrykk oppretter strukturen.

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - web_content:/usr/share/nginx/html
  db:
    image: postgres:13
    environment:
      - POSTGRES_DB=mydb
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=secret

volumes:
  web_content:
  db_data:

Kontroll av Compose-filen

Hvilken av følgende YAML-kodebiter definerer korrekt en Docker Compose-tjeneste med navnet 'api' som bruker imaget 'myapi:1.0' og eksponerer containerport 3000 på vertsport 8080?

Oppsummering: Det viktigste i Compose-filer

Godt jobbet! De har lært det grunnleggende om å skrive en docker-compose.yml-fil.

  • Den starter med version.
  • services definerer applikasjonskomponentene.
  • Hver tjeneste bruker et image, kan eksponere ports, bruke volumes for datalagring og angi environment-variabler.
  • networks og volumes på toppnivå muliggjør avansert konfigurasjon.

Det er viktig å beherske denne YAML-strukturen for å orkestrere apper med flere containere!

Gratis å komme i gang

Lær deg DevOps-bootcamp med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
142
Leksjoner
568

Ofte stilte spørsmål

Er leksjonen «Skrive en Compose-fil» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien DevOps-bootcamp, inkludert «Skrive en Compose-fil», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.

Hva lærer jeg i «Skrive en Compose-fil»?

Lær YAML-syntaksen for `docker-compose.yml` for å definere tjenester, nettverk og volumer. Du øver på DevOps-bootcamp med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med DevOps-bootcamp?

Ingen tidligere erfaring er nødvendig. DevOps-bootcamp på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Skrive en Compose-fil»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne DevOps-bootcamp-leksjonen?

Ja. Alle DevOps-bootcamp-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Hva er Docker Compose?
  2. Skrive en Compose-fil
  3. Distribuere applikasjoner med flere tjenester
  4. Miljøvariabler og .env-filer
← Tilbake til DevOps-bootcamp