Docker Compose är särskilt väl lämpat för ut­veck­lings- och test­mil­jö­er, men även för mindre pro­duk­tions­mil­jö­er. Vi förklarar hur du enkelt kan samordna Docker-ap­pli­ka­tio­ner på Ubuntu med Compose.

Vilka är kraven för Docker Compose på Ubuntu?

Innan du kan använda Docker Compose måste du se till att ditt system uppfyller följande krav:

  • Docker Engine: Compose är ett tillägg till Docker Engine som du måste in­stal­le­ra.
  • Ope­ra­tiv­sy­stem: Ubuntu, sudo-användare med root-be­hö­rig­het.
Tips

Om du vill använda ett annat ope­ra­tiv­sy­stem än Linux, se vår guide om hur du in­stal­le­rar Docker Compose på Windows och Docker Compose på macOS.

Steg-för-steg-guide för in­stal­la­tion av Docker Compose på Ubuntu

För att kunna använda Docker Compose på Ubuntu måste du först in­stal­le­ra Docker Engine och kon­trol­le­ra att det fungerar som det ska. När Docker är igång laddar du ner Compose och skapar YAML-filen för att kon­fi­gu­re­ra dina ap­pli­ka­tio­ner.

Steg 1: Ladda ner och in­stal­le­ra Docker Compose

Ladda ner den senaste versionen av Docker Compose från det of­fi­ci­el­la GitHub-arkivet genom att ange följande kommando i en terminal:

$ curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
shell

Nu kan du ge Docker Compose ex­e­kve­rings­rät­tig­he­ter:

$ sudo chmod +x /usr/local/bin/docker-compose
shell

Använd al­ter­na­tiv --version för att kon­trol­le­ra om Compose har in­stal­le­rats korrekt.

$ docker-compose --version
shell

Du får följande resultat:

Bild: Docker Compose Version
If you see the version number, Docker Compose has been suc­cess­ful­ly installed.

Om in­stal­la­tio­nen miss­lyc­kas, kon­trol­le­ra sökvägen.

Du kan också skapa en symbolisk länk till sökvägen /usr/bin:

$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
shell

Steg 2: Kon­fi­gu­re­ra filen docker-compose.yml

För att visa ut­form­ning­en av en Docker Compose YAML-fil använder vi Nginx-bilden från den of­fi­ci­el­la Docker Hub för container-miljön.

Skapa först en ny mapp i din hem­ka­ta­log:

$ mkdir ~/compose-test
shell

Byt till katalogen och skapa en ny mapp för rot­ka­ta­lo­gen i din Nginx-miljö.

$ cd ~/compose-test
$ mkdir app
shell

Du kan använda valfri tex­tre­di­ge­ra­re, till exempel nano, för att skapa index.html.

$ nano app/index.html
shell

Här är HTML-koden för en ex­em­pel­si­da:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Docker Compose Test</title>
</head>
<body>
    <h1>This is a Docker Compose Test Page for an Nginx container.</h1>
</body>
</html>
html

Spara och stäng HTML-filen och skapa docker-compose.yml.

$ nano docker-compose.yml
shell

In­ne­hål­let är uppdelat i ver­sions­num­ret för kon­fi­gu­ra­tio­nen och tjäns­te­bloc­ket.

version: '3.9'
services:
    web:
        image: nginx:alpine
        ports:
            - "8000:80"
        volumes:
- ./app:/usr/share/nginx/html
YAML

Inom tjäns­te­bloc­ket finns en enda tjänst som heter “web”. Den är as­so­ci­e­rad med den angivna Nginx-bilden och portomdi­ri­ge­ring. I vår kon­fi­gu­ra­tion omdi­ri­ge­ras alla för­fråg­ning­ar som görs till port 8000 på värd­ma­ski­nen till webbcon­tai­nern på port 80, där Nginx körs. Dessutom använder vi en delad volym mellan värden och con­tai­nern. Detta gör den lokala mappen “app” till­gäng­lig för Nginx-ap­pli­ka­tio­nen.

Steg 3: Kör Docker Compose

Med följande kommando skapar vi en webbcon­tai­ner och kör con­tai­nermil­jön i bak­grun­den:

$ docker-compose up -d
shell

Om bilden som anges i YAML-filen inte finns på det lokala systemet kommer den att laddas ner au­to­ma­tiskt.

För att testa om Nginx-miljön körs, ange kommandot ps.

$ docker-compose ps
shell

Den exempel-sida du skapade tidigare är nu till­gäng­lig på localhost:8000 när du kör demon på din dator. Om du använder en fjärr­ser­ver anger du bara IP-adressen till din server istället för “localhost”.

Bild: Docker Compose sample page
Sample page for an Nginx container

Du kan stoppa con­tai­ne­rap­pli­ka­tio­nen med stop.

$ docker-compose stop
shell
Gå till huvudmeny