Skrive en Compose-fil
Lær YAML-syntaksen for `docker-compose.yml` for å definere tjenester, nettverk og volumer.
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.

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 configurationTjenestens `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/appTjenestens `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 configurationSette 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. servicesdefinerer applikasjonskomponentene.- Hver tjeneste bruker et
image, kan eksponereports, brukevolumesfor datalagring og angienvironment-variabler. networksogvolumespå toppnivå muliggjør avansert konfigurasjon.
Det er viktig å beherske denne YAML-strukturen for å orkestrere apper med flere containere!
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
- Hva er Docker Compose?
- Skrive en Compose-fil
- Distribuere applikasjoner med flere tjenester
- Miljøvariabler og .env-filer