Docker Compose er et kraftfuldt og populært værktøj, der bruges til at administrere og implementere applikationer baseret på Docker. Det giver dig mulighed for at definere, konfigurere og køre flere Docker containere som et enkelt projekt, hvilket forenkler implementering af applikationer og sikrer sammenhæng mellem udviklings- og produktionsmiljøer.
Nedenfor er nogle begreber og eksempler på Docker Compose:
Definer projektet ved hjælp af filen docker-compose.yml
I docker-compose.yml
filen kan du definere de tjenester, der kræves til din ansøgning. For at implementere en PHP-webapplikation med en MySQL-database kan du for eksempel 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 ovenstående kodestykke definerer vi to tjenester: web
og db
. Tjenesten web
vil bruge PHP 7.4 image med Apache, lytte på port 80 og montere ./app
biblioteket fra værten til /var/www/html
biblioteket i container. Tjenesten db
vil bruge MySQL 5.7 image og indstille nogle miljøvariabler, der kræves til databasen.
Bruger Docker Compose kommando
Når du har defineret projektet i filen docker-compose.yml
, kan du bruge Docker Compose kommandoer til at administrere tjenesterne.
-
Start projektet:
docker-compose up
Denne kommando starter beholderne for de tjenester, der er defineret i
docker-compose.yml
filen. -
Stop og fjern beholderne:
docker-compose down
Denne kommando stopper og fjerner alle containere relateret til projektet.
-
Liste over kørende containere:
docker-compose ps
Denne kommando viser status for containerne i projektet.
-
Se servicelogfiler:
docker-compose logs
Denne kommando viser logfilerne for tjenesterne i projektet.
Miljøvariabler og tilpasning
Docker Compose giver dig mulighed for at bruge miljøvariable til at tilpasse konfigurationer til forskellige miljøer, såsom udvikling og produktion. Du kan bruge miljøvariabler i docker-compose.yml
filen og definere deres værdier i tilsvarende .env
filer.
For eksempel, hvis du vil definere en miljøvariabel for porten af tjenesten web
, kan du tilføje en linje til .env
filen som denne:
WEB_PORT=8080
Derefter docker-compose.yml
kan du i filen bruge denne miljøvariabel som denne:
version: "3"
services:
web:
image: php:7.4-apache
ports:
- "${WEB_PORT}:80"
volumes:
- ./app:/var/www/html
Når du kører kommandoen docker-compose up
, web
lytter tjenesten på port 8080 i stedet for port 80.
Integrering med Docker Swam
Hvis du ønsker at implementere din applikation i et distribueret miljø med flere noder, Docker Compose kan du integrere med Docker Swarm. Dette giver dig mulighed for at administrere tjenester på tværs af flere noder i en Docker klynge.
For at bruge denne integration skal du blot tilføje indstillingerne --orchestrate
eller --with-registry-auth
, når du kører, docker stack deploy
eller docker-compose up
kommandoer i et Swarm miljø.
Docker Compose er et nyttigt værktøj til nem og effektiv applikationsudvikling, test og implementering. Det minimerer forskellene mellem udviklings- og produktionsmiljøer, sikrer ensartethed i softwareudviklingsprocessen og forbedrer udviklingsteams produktivitet.