Leer hoe u een WordPress-in­stal­la­tie in Docker -con­tai­ners kunt uitvoeren, zowel handmatig als met Docker Compose. WordPress-ont­wik­ke­laars zullen het handig vinden om WordPress in Docker-con­tai­ners uit te voeren. Met Docker kunt u eenvoudig meerdere WordPress-con­fi­gu­ra­ties testen en een nieuwe WordPress-in­stal­la­tie starten met slechts een paar een­vou­di­ge commando’s.

Vereisten

Om WordPress soepel te laten draaien in Docker-con­tai­ners, heb je een actuele en on­der­steun­de Linux-dis­tri­bu­tie nodig. Oudere versies zoals CentOS 7 of Ubuntu 14.04 zijn verouderd en moeten worden vervangen door moderne al­ter­na­tie­ven. Aan­be­vo­len opties zijn onder andere:

  • Ubuntu 22.04 LTS of nieuwer
  • Debian 12 of nieuwer
  • Een huidige versie van Red Hat En­ter­pri­se Linux (RHEL) of AlmaLinux

Je moet ook Docker ge­ïn­stal­leerd en klaar voor gebruik hebben. De minimale vereiste is Docker 20.10 of hoger om te kunnen pro­fi­te­ren van de nieuwste be­vei­li­gings- en pres­ta­tie­ver­be­te­rin­gen. Als je Docker Compose wilt gebruiken, zorg er dan voor dat je minimaal versie 2.x gebruikt, aangezien oudere versies niet langer actief worden on­der­hou­den.

Ba­sis­ken­nis van de op­dracht­re­gel en be­kend­heid met Docker Compose en Docker zijn nuttig. Als u een grotere of schaal­ba­re op­stel­ling plant, is het de moeite waard om Ku­ber­ne­tes te verkennen voor pro­fes­si­o­ne­le con­tai­ner­or­kestra­tie.

Hoe WordPress in Docker-con­tai­ners uitvoeren

Een suc­ces­vol­le WordPress-in­stal­la­tie bestaat uit drie elementen:

  • De WordPress-software
  • Een MySQL- of MariaDB-database
  • De laatste in­stal­la­tie­stap­pen worden voltooid in een browser

In de on­der­staan­de voor­beel­den worden WordPress en MySQL/MariaDB in af­zon­der­lij­ke, ge­kop­pel­de con­tai­ners uit­ge­voerd. De container waarin de WordPress-software wordt uit­ge­voerd, wordt toe­ge­we­zen aan een poort op de host, zodat u er via een browser toegang toe hebt.

Een MySQL/MariaDB-container uitvoeren

Zodra Docker draait, is de eerste stap het instellen van de database. Begin met het uitvoeren van een container met de naam my-db. U kunt MySQL of MariaDB gebruiken, een directe ver­van­ging voor MySQL.

MySQL

Start een container met het volgende commando:

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

MariaDB

Start een container met het volgende commando:

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

Een database aanmaken

Nadat u uw container hebt aan­ge­maakt, moet u een database aanmaken voor uw WordPress-in­stal­la­tie.

MySQL

Maak ver­bin­ding met uw nieuw aan­ge­maak­te da­ta­base­con­tai­ner met behulp van het volgende commando:

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

Maak een database aan:

CREATE Database wordpress-db;

MariaDB

Maak ver­bin­ding met uw nieuw aan­ge­maak­te da­ta­base­con­tai­ner met behulp van het volgende commando:

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

Maak een database aan:

CREATE Database wordpress-db;

Een WordPress-container uitvoeren

Start ver­vol­gens een container met behulp van de officiële WordPress-image. Deze wordt toe­ge­we­zen aan hostpoort 8080 en gekoppeld aan de da­ta­base­con­tai­ner.

Twee op­mer­kin­gen:

  • Als u een firewall hebt, moet u mogelijk toegang tot poort 8080 toestaan.
  • Als er al een andere service op poort 8080 draait, kunt u een andere poort op de host kiezen.

Het commando verschilt enigszins, af­han­ke­lijk van of u MySQL of MariaDB gebruikt:

MySQL

Start een WordPress-container met behulp van de volgende opdracht:

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

MariaDB

Start een WordPress-container met behulp van het commando:

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

Er zijn nog veel meer om­ge­vings­va­ri­a­be­len die u aan deze opdracht kunt toevoegen als u de stan­daard­in­stel­lin­gen wilt over­schrij­ven, waaronder:

  • -e WORDPRESS_DB_HOST=[hostname]: De stan­daard­in­stel­ling is het IP-adres en de poort van de ge­kop­pel­de MySQL/MariaDB-container. Met deze variabele kunt u ver­bin­ding maken met een MySQL/MariaDB-database op een andere server.
  • -e WORDPRESS_DB_USER=[username]: De stan­daard­waar­de is root.
  • -e WORDPRESS_DB_PASSWORD=[password]: De stan­daard­in­stel­ling is de MYSQL_ROOT_PASSWORD om­ge­vings­va­ri­a­be­le van de ge­kop­pel­de MySQL/MariaDB-container.
  • -e WORDPRESS_DB_NAME=[name]: De stan­daard­waar­de is "wordpress".

Voor een betere be­vei­li­ging kan het nuttig zijn om con­tai­ners niet op het standaard bridge-netwerk te draaien. In plaats daarvan kunt u een aangepast netwerk maken:

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

Hier zijn uw con­tai­ners beter ge­ï­so­leerd van andere con­tai­ners, waardoor het risico op on­ge­wens­te ver­bin­din­gen wordt ver­min­derd. U kunt ook net­werk­re­gels ge­de­tail­leer­der con­fi­gu­re­ren, bij­voor­beeld door aan­ge­pas­te fire­wal­lin­stel­lin­gen te gebruiken of een reverse proxy te im­ple­men­te­ren.

Hoe voltooi je de in­stal­la­tie in een browser?

Voor de laatste in­stal­la­tie­stap­pen moet u met een browser toegang krijgen tot de WordPress-container.

In het bo­ven­staan­de voorbeeld hebben we poort 8080 op de host toe­ge­we­zen aan poort 80 (web­ser­vi­ces) in de container. Dit betekent dat u nu via uw browser toegang hebt tot de container, hetzij via het IP-adres van de server, hetzij via een do­mein­naam:

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

Ga naar de URL in uw browser, selecteer de taal waarin u het programma wilt in­stal­le­ren en klik op Doorgaan.

Afbeelding: Screenshot showing the WordPress language selection
You can now select your in­stal­la­ti­on language in the browser.

Op het volgende scherm zie je een bericht dat je voor­be­reidt op de volgende stap van de in­stal­la­tie. Klik op de knop Let’s go! om door te gaan.

Afbeelding: Screenshot of the WordPress installation prompt
The WordPress in­stal­la­ti­on prompt informs you about the next setup step.

Voer nu uw database-in­for­ma­tie in, zodat het wp-config.php -bestand kan worden aan­ge­maakt:

Afbeelding: Screenshot of the WordPress database connection
Enter the requested in­for­ma­ti­on for your database.

Houd er rekening mee dat de stan­daard­ge­brui­ker ‘root’ is, tenzij anders aan­ge­ge­ven. Voer de naam van de database die u hebt aan­ge­maakt en het wacht­woord dat u hebt gekozen in. Als u op ‘Verzenden’ klikt, wordt u door de volgende stappen van de in­stal­la­tie geleid.

Afbeelding: Screenshot of the WordPress installation: site info
Enter the requested in­for­ma­ti­on about your WordPress site.
  • Sitetitel: Voer de titel van uw website in.
  • Ge­brui­kers­naam: Dit is de primaire be­heer­ders­ge­brui­kers­naam voor uw website. Tip: Om vei­lig­heids­re­de­nen raden we u aan om ‘Admin’ of uw do­mein­naam/URL niet te gebruiken.
  • Wacht­woord: Noteer dit wacht­woord voordat u ver­der­gaat.
  • Uw e-mailadres: Dit is het e-mailadres dat aan het be­heer­ders­ac­count is gekoppeld.

Klik ver­vol­gens op de knop WordPress in­stal­le­ren om de in­stal­la­tie te voltooien.

Afbeelding: Screenshot of the successful WordPress installation
The success message shows the in­stal­la­ti­on was suc­ces­sful.

Zodra de in­stal­la­tie is voltooid, krijgt u een be­ves­ti­gings­be­richt te zien en kunt u inloggen op WordPress.

Hoe WordPress met Docker Compose uit te voeren

Het gebruik van Docker Compose is een andere manier om WordPress uit te voeren. In­struc­ties voor in­stal­la­tie en gebruik vindt u in ons artikel over Docker-or­kestra­tie met Swarm en Compose. In essentie kunt u met deze tool alle benodigde services in één bestand de­fi­ni­ë­ren en ze samen starten.

Het YAML-bestand aanmaken

Maak eerst een map voor uw project en ga daarheen:

sudo mkdir wordpress
cd wordpress

Maak een YAML-bestand met de naam docker-compose.yml aan met behulp van de volgende opdracht:

sudo nano docker-compose.yml

De inhoud van het bestand verschilt enigszins, af­han­ke­lijk van of u MySQL of MariaDB gebruikt:

MySQL

Voeg de volgende inhoud toe aan het bestand:

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

Sla het bestand op en sluit het af.

MariaDB

Voeg de volgende inhoud toe aan het bestand:

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

Sla het bestand op en sluit het af.

De con­tai­ners starten

Gebruik ver­vol­gens Docker Compose om de con­tai­ners te starten met de volgende opdracht:

sudo docker-compose up -d

Gebruik de volgende opdracht om te con­tro­le­ren of de con­tai­ners zijn aan­ge­maakt:

sudo docker-compose ps

Om de in­stal­la­tie te voltooien, gaat u naar de WordPress-container in een browser. U kunt het IP-adres van de server of de URL gebruiken:

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

Ku­ber­ne­tes voor schaal­ba­re WordPress-im­ple­men­ta­ties

Voor grotere en pro­duc­tieklaar op­stel­lin­gen kan Ku­ber­ne­tes (K8s) worden gebruikt. Met Ku­ber­ne­tes kunt u WordPress-con­tai­ners over meerdere knoop­pun­ten heen co­ör­di­ne­ren en au­to­ma­tisch beheren. Het gebruik van een Ku­ber­ne­tes-cluster biedt ver­schil­len­de voordelen, zoals au­to­ma­ti­sche schaal­baar­heid, zelf­her­stel­len­de me­cha­nis­men en ge­cen­tra­li­seerd re­sour­ce­be­heer. Een manier om dit te im­ple­men­te­ren is met Helm, een pak­ket­be­heer­der voor Ku­ber­ne­tes:

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

Dit maakt een zeer be­schik­ba­re, schaal­ba­re WordPress-im­ple­men­ta­tie mogelijk met load balancing, au­to­ma­ti­sche updates en failover-on­der­steu­ning.

Ga naar hoofdmenu