Docker Compose er et kraftig og populært verktøy som brukes til å administrere og distribuere applikasjoner basert på Docker. Den lar deg definere, konfigurere og kjøre flere Docker containere som et enkelt prosjekt, forenkler applikasjonsdistribusjon og sikrer konsistens mellom utviklings- og produksjonsmiljøer.
Nedenfor er noen konsepter og eksempler på Docker Compose:
Definer prosjektet ved å bruke filen docker-compose.yml
I docker-compose.yml
filen kan du definere tjenestene som kreves for søknaden din. For eksempel, for å distribuere en PHP-nettapplikasjon med en MySQL-database, kan du definere to tjenester som følger:
version: "3"
services:
web:
image: php:7.4-apache
ports:
- "80:80"
volumes:
- ./app:/var/www/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: my_database
I kodebiten ovenfor definerer vi to tjenester: web
og db
. Tjenesten web
vil bruke PHP 7.4 image med Apache, lytte på port 80 og montere ./app
katalogen fra verten til /var/www/html
katalogen i container. Tjenesten db
vil bruke MySQL 5.7 image og sette noen miljøvariabler som kreves for databasen.
Ved hjelp av Docker Compose kommando
Når du har definert prosjektet i filen docker-compose.yml
, kan du bruke Docker Compose kommandoer til å administrere tjenestene.
-
Start prosjektet:
docker-compose up
Denne kommandoen starter beholderne for tjenestene som er definert i filen
docker-compose.yml
. -
Stopp og fjern beholderne:
docker-compose down
Denne kommandoen stopper og fjerner alle beholdere relatert til prosjektet.
-
Liste kjørende beholdere:
docker-compose ps
Denne kommandoen vil vise statusen til beholderne i prosjektet.
-
Se tjenestelogger:
docker-compose logs
Denne kommandoen viser loggene til tjenestene i prosjektet.
Miljøvariabler og tilpasning
Docker Compose lar deg bruke miljøvariabler til å tilpasse konfigurasjoner for forskjellige miljøer, for eksempel utvikling og produksjon. Du kan bruke miljøvariabler i docker-compose.yml
filen og definere verdiene deres i tilsvarende .env
filer.
For eksempel, hvis du vil definere en miljøvariabel for porten til tjenesten web
, kan du legge til en linje i .env
filen slik:
WEB_PORT=8080
Deretter, i docker-compose.yml
filen, kan du bruke denne miljøvariabelen slik:
version: "3"
services:
web:
image: php:7.4-apache
ports:
- "${WEB_PORT}:80"
volumes:
- ./app:/var/www/html
Når du kjører kommandoen docker-compose up
, web
vil tjenesten lytte på port 8080 i stedet for port 80.
Integrering med Docker Swam
Hvis du ønsker å distribuere applikasjonen din i et distribuert miljø med flere noder, Docker Compose kan du integrere med Docker Swarm. Dette lar deg administrere tjenester på tvers av flere noder i en Docker klynge.
For å bruke denne integrasjonen trenger du bare å legge til alternativene --orchestrate
eller --with-registry-auth
når du kjører docker stack deploy
eller docker-compose up
kommandoer i et Swarm miljø.
Docker Compose er et nyttig verktøy for enkel og effektiv applikasjonsutvikling, testing og distribusjon. Det minimerer forskjellene mellom utviklings- og produksjonsmiljøer, sikrer konsistens i programvareutviklingsprosessen og øker produktiviteten til utviklingsteam.