Lär dig hur du kör en WordPress-in­stal­la­tion i Docker- con­tain­rar, både manuellt och med Docker Compose. WordPress-ut­veck­la­re kommer att finna det an­vänd­bart att köra WordPress i Docker-con­tain­rar. Docker gör det enkelt att testa flera WordPress-kon­fi­gu­ra­tio­ner och starta en ny WordPress-in­stal­la­tion med bara några enkla kommandon.

Krav

För att WordPress ska fungera smidigt i Docker-con­tain­rar behöver du en aktuell och stödd Linux-dis­tri­bu­tion. Äldre versioner som CentOS 7 eller Ubuntu 14.04 är föråld­ra­de och bör ersättas med moderna al­ter­na­tiv. Re­kom­men­de­ra­de al­ter­na­tiv är bland annat:

  • Ubuntu 22.04 LTS eller nyare
  • Debian 12 eller nyare
  • En aktuell version av Red Hat En­ter­pri­se Linux (RHEL) eller AlmaLinux

Du måste också ha Docker in­stal­le­rat och klart att använda. Mi­ni­mikra­vet är Docker 20.10 eller högre för att kunna dra nytta av de senaste säkerhets- och pre­stan­da­för­bätt­ring­ar­na. 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 un­der­hålls aktivt.

Grund­läg­gan­de kunskaper om kom­man­do­ra­der och för­tro­gen­het med Docker Compose och Docker är till hjälp. Om du planerar en större eller skalbar in­stal­la­tion är det värt att utforska Ku­ber­ne­tes för pro­fes­sio­nell con­tai­ne­ror­kest­re­ring.

Hur man kör WordPress i Docker-con­tain­rar

En lyckad WordPress-in­stal­la­tion består av tre delar:

  • WordPress-pro­gram­va­ran
  • En MySQL- eller MariaDB-databas
  • De sista in­stal­la­tions­ste­gen slutförs i en webb­lä­sa­re

I exemplen nedan körs WordPress och MySQL/MariaDB i separata, länkade con­tain­rar. Con­tai­nern som kör WordPress-pro­gram­va­ran mappas till en port på värden så att du kan komma åt den via en webb­lä­sa­re.

Köra en MySQL/MariaDB-container

När Docker körs är det första steget att kon­fi­gu­re­ra 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 er­sätt­ning 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-in­stal­la­tion.

MySQL

Anslut till din nyskapade da­ta­bas­behål­la­re 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 da­ta­bas­behål­la­re 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 of­fi­ci­el­la WordPress-bilden. Den kommer att mappas till värdport 8080 och länkas till da­ta­ba­scon­tai­nern.

Två an­märk­ning­ar:

  • 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 mil­jö­va­ri­ab­ler som du kan lägga till i det här kommandot om du vill åsi­do­sät­ta stan­dardin­ställ­ning­ar­na, bland annat:

  • -e WORDPRESS_DB_HOST=[hostname]: Stan­dardin­ställ­ning­en är IP-adressen och porten för den länkade MySQL/MariaDB-con­tai­nern. Med denna variabel kan du ansluta till en MySQL/MariaDB-databas på en annan server.
  • -e WORDPRESS_DB_USER=[username]: Stan­dard­vär­det är root.
  • -e WORDPRESS_DB_PASSWORD=[password]: Stan­dard­vär­det är MYSQL_ROOT_PASSWORD från den länkade MySQL/MariaDB-con­tai­nern.
  • -e WORDPRESS_DB_NAME=[name]: Stan­dard­vär­det är "wordpress".

För ökad säkerhet kan det vara bra att inte köra con­tain­rar på stan­dard­brygg­nät­ver­ket. 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 con­tain­rar mer isolerade från andra, vilket minskar risken för oönskade an­slut­ning­ar. Du kan också kon­fi­gu­re­ra nät­verks­reg­ler mer de­tal­je­rat, till exempel genom att använda anpassade brand­vägg­s­in­ställ­ning­ar eller dis­tri­bu­e­ra en omvänd proxy.

Hur man slutför in­stal­la­tio­nen i en webb­lä­sa­re

För de sista in­stal­la­tions­ste­gen måste du öppna WordPress-con­tai­nern med en webb­lä­sa­re.

I exemplet ovan mappade vi port 8080 på värden till port 80 (webb­tjäns­ter) i con­tai­nern. Det innebär att du nu kan komma åt con­tai­nern via din webb­lä­sa­re antingen genom serverns IP-adress eller ett domännamn:

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

Öppna web­ba­dres­sen i din webb­lä­sa­re, välj in­stal­la­tions­språk och klicka på Fortsätt.

Bild: Screenshot showing the WordPress language selection
You can now select your in­stal­la­tion language in the browser.

På nästa skärm visas ett med­de­lan­de som för­be­re­der dig för nästa steg i in­stal­la­tio­nen. Klicka på knappen Kom igång! för att fortsätta.

Bild: Screenshot of the WordPress installation prompt
The WordPress in­stal­la­tion prompt informs you about the next setup step.

Ange nu din da­ta­bas­in­for­ma­tion så att filen wp-config.php kan skapas:

Bild: Screenshot of the WordPress database connection
Enter the requested in­for­ma­tion for your database.

Observera att stan­dar­dan­vän­da­ren ä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 in­stal­la­tio­nen.

Bild: Screenshot of the WordPress installation: site info
Enter the requested in­for­ma­tion about your WordPress site.
  • Webb­plat­sens titel: Ange titeln på din webbplats.
  • An­vän­dar­namn: Detta är det primära ad­mi­nist­ra­tör­san­vän­dar­nam­net för din webbplats. Tips: Av sä­ker­hets­skäl re­kom­men­de­rar vi att du inte använder “Admin” eller ditt domännamn/URL.
  • Lösenord: Se till att skriva ner detta innan du fort­sät­ter.
  • Din e-post­a­dress: Detta är den e-post­a­dress som är kopplad till ad­mi­nist­ra­tör­s­kon­tot.

Klicka sedan på knappen In­stal­le­ra WordPress för att slutföra in­stal­la­tio­nen.

Bild: Screenshot of the successful WordPress installation
The success message shows the in­stal­la­tion was suc­cess­ful.

När in­stal­la­tio­nen är klar visas ett be­kräf­tel­se­med­de­lan­de 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 in­stal­la­tions- och an­vänd­nings­in­struk­tio­ner i vår artikel om Docker-or­kest­re­ring med Swarm och Compose. I huvudsak låter verktyget dig definiera alla nöd­vän­di­ga tjänster i en enda fil och starta dem till­sam­mans.

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

In­ne­hål­let 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 con­tain­rar­na

Använd sedan Docker Compose för att starta con­tain­rar­na med följande kommando:

sudo docker-compose up -d

Använd följande kommando för att kon­trol­le­ra om be­hål­lar­na har skapats:

sudo docker-compose ps

För att slutföra in­stal­la­tio­nen, besök WordPress-con­tai­nern i en webb­lä­sa­re. Du kan använda antingen serverns IP-adress eller dess URL:

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

Ku­ber­ne­tes för skalbara WordPress-dis­tri­bu­tio­ner

För större in­stal­la­tio­ner och pro­duk­tions­mil­jö­er kan Ku­ber­ne­tes (K8s) användas. Ku­ber­ne­tes gör det möjligt att samordna och au­to­ma­tiskt hantera WordPress-con­tain­rar över flera noder. Att använda ett Ku­ber­ne­tes-kluster erbjuder flera fördelar, såsom au­to­ma­tisk skalning, själv­lä­kan­de me­ka­nis­mer och cent­ra­li­se­rad re­surs­han­te­ring. Ett sätt att im­ple­men­te­ra detta är med Helm, en pa­ket­han­te­ra­re för Ku­ber­ne­tes:

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 till­gäng­lig, skalbar WordPress-dis­tri­bu­tion med last­ba­lan­se­ring, au­to­ma­tis­ka upp­da­te­ring­ar och stöd för failover.

Gå till huvudmeny