Docker Compose är ett kraftfullt och populärt verktyg som används för att hantera och distribuera applikationer baserade på Docker. Det låter dig definiera, konfigurera och köra flera Docker behållare som ett enda projekt, vilket förenklar applikationsdistributionen och säkerställer överensstämmelse mellan utvecklings- och produktionsmiljöer.
Nedan följer några begrepp och exempel på Docker Compose:
Definiera projektet med filen docker-compose.yml
I docker-compose.yml
filen kan du definiera de tjänster som krävs för din ansökan. Till exempel, för att distribuera en PHP-webbapplikation med en MySQL-databas, kan du definiera två tjänster enligt följande:
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 kodavsnittet ovan definierar vi två tjänster: web
och db
. Tjänsten web
kommer att använda PHP 7.4 image med Apache, lyssna på port 80 och montera ./app
katalogen från värden till /var/www/html
katalogen i container. Tjänsten db
kommer att använda MySQL 5.7 image och ställa in några miljövariabler som krävs för databasen.
Använder Docker Compose kommando
När du har definierat projektet i filen docker-compose.yml
kan du använda Docker Compose kommandon för att hantera tjänsterna.
-
Starta projektet:
docker-compose up
Detta kommando startar behållarna för de tjänster som definieras i
docker-compose.yml
filen. -
Stoppa och ta bort behållarna:
docker-compose down
Detta kommando stoppar och tar bort alla behållare som är relaterade till projektet.
-
Lista körande behållare:
docker-compose ps
Detta kommando visar statusen för behållarna i projektet.
-
Visa tjänsteloggar:
docker-compose logs
Detta kommando visar loggarna för tjänsterna i projektet.
Miljövariabler och anpassning
Docker Compose låter dig använda miljövariabler för att anpassa konfigurationer för olika miljöer, såsom utveckling och produktion. Du kan använda miljövariabler i docker-compose.yml
filen och definiera deras värden i motsvarande .env
filer.
Om du till exempel vill definiera en miljövariabel för porten för tjänsten web
kan du lägga till en rad i .env
filen så här:
WEB_PORT=8080
Sedan, i docker-compose.yml
filen, kan du använda den här miljövariabeln så här:
version: "3"
services:
web:
image: php:7.4-apache
ports:
- "${WEB_PORT}:80"
volumes:
- ./app:/var/www/html
När du kör docker-compose up
kommandot web
lyssnar tjänsten på port 8080 istället för port 80.
Integrering med Docker Swam
Om du vill distribuera din applikation i en distribuerad miljö med flera noder, Docker Compose kan du integrera med Docker Swarm. Detta gör att du kan hantera tjänster över flera noder i ett Docker kluster.
För att använda denna integration behöver du bara lägga till alternativen --orchestrate
eller --with-registry-auth
när du kör docker stack deploy
eller docker-compose up
kommandon i en Swarm miljö.
Docker Compose är ett användbart verktyg för enkel och effektiv applikationsutveckling, testning och driftsättning. Det minimerar skillnaderna mellan utvecklings- och produktionsmiljöer, säkerställer konsekvens i mjukvaruutvecklingsprocessen och förbättrar utvecklingsteamens produktivitet.