Docker Compose: Grunder och användning

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.