Lär dig hur du kör en WordPress-installation i Docker- containrar, både manuellt och med Docker Compose. WordPress-utvecklare kommer att finna det användbart att köra WordPress i Docker-containrar. Docker gör det enkelt att testa flera WordPress-konfigurationer och starta en ny WordPress-installation med bara några enkla kommandon.

Krav

För att WordPress ska fungera smidigt i Docker-containrar behöver du en aktuell och stödd Linux-distribution. Äldre versioner som CentOS 7 eller Ubuntu 14.04 är föråldrade och bör ersättas med moderna alternativ. Rekommenderade alternativ är bland annat:

  • Ubuntu 22.04 LTS eller nyare
  • Debian 12 eller nyare
  • En aktuell version av Red Hat Enterprise Linux (RHEL) eller AlmaLinux

Du måste också ha Docker installerat och klart att använda. Minimikravet är Docker 20.10 eller högre för att kunna dra nytta av de senaste säkerhets- och prestandaförbättringarna. Om du vill använda Docker Compose måste du se till att du använder minst version 2.x, eftersom äldre versioner inte längre underhålls aktivt.

Grundläggande kunskaper om kommandorader och förtrogenhet med Docker Compose och Docker är till hjälp. Om du planerar en större eller skalbar installation är det värt att utforska Kubernetes för professionell containerorkestrering.

Hur man kör WordPress i Docker-containrar

En lyckad WordPress-installation består av tre delar:

  • WordPress-programvaran
  • En MySQL- eller MariaDB-databas
  • De sista installationsstegen slutförs i en webbläsare

I exemplen nedan körs WordPress och MySQL/MariaDB i separata, länkade containrar. Containern som kör WordPress-programvaran mappas till en port på värden så att du kan komma åt den via en webbläsare.

Köra en MySQL/MariaDB-container

När Docker körs är det första steget att konfigurera databasen. Börja med att köra en container med namnet my-db. Du kan använda antingen MySQL eller MariaDB, som är en direkt ersättning för MySQL.

MySQL

Starta en container med följande kommando:

sudo docker run --name my-db -e MYSQL_ROOT_PASSWORD=SECURE_PASSWORD -d mysql:latest

MariaDB

Starta en container med följande kommando:

sudo docker run --name my-db -e MYSQL_ROOT_PASSWORD=SECURE_PASSWORD -d mariadb:latest

Skapa en databas

När du har skapat din container måste du skapa en databas för din WordPress-installation.

MySQL

Anslut till din nyskapade databasbehållare med följande kommando:

docker exec -it my-db mysql -u root -p

Skapa en databas:

CREATE Database wordpress-db;

MariaDB

Anslut till din nyskapade databasbehållare med följande kommando:

docker exec -it my-db mariadb -u root -p

Skapa en databas:

CREATE Database wordpress-db;

Köra en WordPress-container

Kör sedan en container med den officiella WordPress-bilden. Den kommer att mappas till värdport 8080 och länkas till databascontainern.

Två anmärkningar:

  • Om du har en brandvägg kan du behöva tillåta åtkomst till port 8080.
  • Om en annan tjänst redan körs på port 8080 kan du välja en annan port på värden.

Kommandot varierar något beroende på om du använder MySQL eller MariaDB:

MySQL

Starta en WordPress-container med följande kommando:

sudo docker run --name my-wordpress -p 8080:80 --link my-db:mysql -d wordpress:latest

MariaDB

Starta en WordPress-container med kommandot:

sudo docker run --name my-wordpress -p 8080:80 --link my-db:mariadb -d wordpress:latest

Det finns många andra miljövariabler som du kan lägga till i det här kommandot om du vill åsidosätta standardinställningarna, bland annat:

  • -e WORDPRESS_DB_HOST=[hostname]: Standardinställningen är IP-adressen och porten för den länkade MySQL/MariaDB-containern. Med denna variabel kan du ansluta till en MySQL/MariaDB-databas på en annan server.
  • -e WORDPRESS_DB_USER=[username]: Standardvärdet är root.
  • -e WORDPRESS_DB_PASSWORD=[password]: Standardvärdet är MYSQL_ROOT_PASSWORD från den länkade MySQL/MariaDB-containern.
  • -e WORDPRESS_DB_NAME=[name]: Standardvärdet är "wordpress".

För ökad säkerhet kan det vara bra att inte köra containrar på standardbryggnätverket. Istället kan du skapa ett anpassat nätverk:

docker network create my-wp-network
docker run --name my-db --network my-wp-network -e MYSQL_ROOT_PASSWORD=SECURE_PASSWORD -d mysql:latest
docker run --name my-wordpress --network my-wp-network -p 8080:80 -d wordpress:latest

Här är dina containrar mer isolerade från andra, vilket minskar risken för oönskade anslutningar. Du kan också konfigurera nätverksregler mer detaljerat, till exempel genom att använda anpassade brandväggsinställningar eller distribuera en omvänd proxy.

Hur man slutför installationen i en webbläsare

För de sista installationsstegen måste du öppna WordPress-containern med en webbläsare.

I exemplet ovan mappade vi port 8080 på värden till port 80 (webbtjänster) i containern. Det innebär att du nu kan komma åt containern via din webbläsare antingen genom serverns IP-adress eller ett domännamn:

  • http://<server-ip>:8080
  • http://example.com:8080

Öppna webbadressen i din webbläsare, välj installationsspråk och klicka på Fortsätt.

Bild: Screenshot showing the WordPress language selection
You can now select your installation language in the browser.

På nästa skärm visas ett meddelande som förbereder dig för nästa steg i installationen. Klicka på knappen Kom igång! för att fortsätta.

Bild: Screenshot of the WordPress installation prompt
The WordPress installation prompt informs you about the next setup step.

Ange nu din databasinformation så att filen wp-config.php kan skapas:

Bild: Screenshot of the WordPress database connection
Enter the requested information for your database.

Observera att standardanvändaren är “root” om inte annat anges. Ange namnet på den databas du skapade och det lösenord du valde. Klicka på “Skicka” för att gå vidare till nästa steg i installationen.

Bild: Screenshot of the WordPress installation: site info
Enter the requested information about your WordPress site.
  • Webbplatsens titel: Ange titeln på din webbplats.
  • Användarnamn: Detta är det primära administratörsanvändarnamnet för din webbplats. Tips: Av säkerhetsskäl rekommenderar vi att du inte använder “Admin” eller ditt domännamn/URL.
  • Lösenord: Se till att skriva ner detta innan du fortsätter.
  • Din e-postadress: Detta är den e-postadress som är kopplad till administratörskontot.

Klicka sedan på knappen Installera WordPress för att slutföra installationen.

Bild: Screenshot of the successful WordPress installation
The success message shows the installation was successful.

När installationen är klar visas ett bekräftelsemeddelande och du kan sedan logga in på WordPress.

Hur man kör WordPress med Docker Compose

Att använda Docker Compose är ett annat sätt att köra WordPress. Du hittar installations- och användningsinstruktioner i vår artikel om Docker-orkestrering med Swarm och Compose. I huvudsak låter verktyget dig definiera alla nödvändiga tjänster i en enda fil och starta dem tillsammans.

Skapa YAML-filen

Skapa först en katalog för ditt projekt och navigera till den:

sudo mkdir wordpress
cd wordpress

Skapa en YAML-fil med namnet docker-compose.yml med följande kommando:

sudo nano docker-compose.yml

Innehållet i filen varierar något beroende på om du använder MySQL eller MariaDB:

MySQL

Lägg till följande innehåll i filen:

wordpress:
    image: wordpress:latest
    links:
        - wordpress_db:mysql
    ports:
        - 8080:80
wordpress_db:
    image: mysql
    environment:
        MYSQL_ROOT_PASSWORD: SECURE_PASSWORD

Spara och stäng filen.

MariaDB

Lägg till följande innehåll i filen:

wordpress:
    image: wordpress:latest
    links:
        - wordpress_db:mariadb
    ports:
        - 8080:80
wordpress_db:
    image: mariadb
    environment:
        MYSQL_ROOT_PASSWORD: SECURE_PASSWORD

Spara och stäng filen.

Starta containrarna

Använd sedan Docker Compose för att starta containrarna med följande kommando:

sudo docker-compose up -d

Använd följande kommando för att kontrollera om behållarna har skapats:

sudo docker-compose ps

För att slutföra installationen, besök WordPress-containern i en webbläsare. Du kan använda antingen serverns IP-adress eller dess URL:

  • http://192.168.0.1:8080
  • http://example.com:8080

Kubernetes för skalbara WordPress-distributioner

För större installationer och produktionsmiljöer kan Kubernetes (K8s) användas. Kubernetes gör det möjligt att samordna och automatiskt hantera WordPress-containrar över flera noder. Att använda ett Kubernetes-kluster erbjuder flera fördelar, såsom automatisk skalning, självläkande mekanismer och centraliserad resurshantering. Ett sätt att implementera detta är med Helm, en pakethanterare för Kubernetes:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-wordpress bitnami/wordpress --set service.type=LoadBalancer

Detta möjliggör en högt tillgänglig, skalbar WordPress-distribution med lastbalansering, automatiska uppdateringar och stöd för failover.

Gå till huvudmeny