Lær, hvordan du kører en WordPress-in­stal­la­tion i Docker-con­tai­ne­re, både manuelt og med Docker Compose. WordPress-udviklere vil finde det nyttigt at køre WordPress i Docker-con­tai­ne­re. Docker gør det nemt at teste flere WordPress-kon­fi­gu­ra­tio­ner og starte en ny WordPress-in­stal­la­tion med blot et par enkle kom­man­do­er.

Krav

For at WordPress kan køre pro­blem­frit i Docker-con­tai­ne­re, skal du have en opdateret og un­der­støt­tet Linux-di­stri­bu­tion. Ældre versioner som CentOS 7 eller Ubuntu 14.04 er forældede og bør udskiftes med moderne al­ter­na­ti­ver. An­be­fa­le­de mu­lig­he­der er blandt andet:

  • Ubuntu 22.04 LTS eller nyere
  • Debian 12 eller nyere
  • En aktuel version af Red Hat En­ter­pri­se Linux (RHEL) eller AlmaLinux

Du skal også have Docker in­stal­le­ret og klar til brug. Mini­mum­s­kra­vet er Docker 20.10 eller nyere for at kunne drage fordel af de seneste sik­ker­heds- og yde­ev­ne­for­bed­rin­ger. Hvis du vil bruge Docker Compose, skal du sikre dig, at du bruger mindst version 2.x, da ældre versioner ikke længere ved­li­ge­hol­des aktivt.

Grund­læg­gen­de kendskab til kom­man­do­linj­en samt erfaring med Docker Compose og Docker er en fordel. Hvis du plan­læg­ger en større eller skalerbar løsning, kan det være en god idé at se nærmere på Ku­ber­ne­tes, som tilbyder con­tai­ner­or­ke­stre­ring i pro­fes­sio­nel kvalitet.

Sådan kører du WordPress i Docker-con­tai­ne­re

En vellykket WordPress-in­stal­la­tion består af tre elementer:

  • WordPress-softwaren
  • En MySQL- eller MariaDB-database
  • De sidste in­stal­la­tions­trin udføres i en browser

I ek­semp­ler­ne nedenfor kører WordPress og MySQL/MariaDB i separate, sam­men­kob­le­de con­tai­ne­re. Den container, der kører WordPress-softwaren, vil blive til­knyt­tet en port på vært­scom­pu­te­ren, så du kan få adgang til den via en browser.

Kørsel af en MySQL/MariaDB-container

Når Docker er i gang, er det første skridt at opsætte databasen. Start med at køre en container ved navn my-db. Du kan enten bruge MySQL eller MariaDB, som er en direkte er­stat­ning for MySQL.

MySQL

Start en container med følgende kommando:

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

MariaDB

Start en container med følgende kommando:

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

Op­ret­tel­se af en database

Når du har oprettet din container, skal du oprette en database til din WordPress-in­stal­la­tion.

MySQL

Opret for­bin­del­se til din ny­op­ret­te­de da­ta­ba­secon­tai­ner ved hjælp af følgende kommando:

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

Opret en database:

CREATE Database wordpress-db;

MariaDB

Opret for­bin­del­se til din ny­op­ret­te­de da­ta­ba­secon­tai­ner ved hjælp af følgende kommando:

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

Opret en database:

CREATE Database wordpress-db;

Sådan kører du en WordPress-container

Kør derefter en container ved hjælp af det of­fi­ci­el­le WordPress-billede. Den vil blive til­knyt­tet værtsport 8080 og koblet til da­ta­ba­secon­tai­ne­ren.

To be­mærk­nin­ger:

  • Hvis du har en firewall, skal du muligvis give adgang til port 8080.
  • Hvis en anden tjeneste allerede kører på port 8080, kan du vælge en anden port på værten.

Kom­man­do­en varierer en smule, afhængigt af om du bruger MySQL eller MariaDB:

MySQL

Start en WordPress-container ved hjælp af følgende kommando:

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

MariaDB

Start en WordPress-container ved hjælp af kom­man­do­en:

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

Der er mange andre mil­jøva­ri­ab­ler, du kan tilføje til denne kommando, hvis du ønsker at til­si­de­sæt­te stan­dar­dindstil­lin­ger­ne, herunder:

  • -e WORDPRESS_DB_HOST=[hostname]: Stan­dar­dindstil­lin­gen er IP-adressen og porten for den til­knyt­te­de MySQL/MariaDB-container. Denne variabel giver dig mulighed for at oprette for­bin­del­se til en MySQL/MariaDB-database på en anden server.
  • -e WORDPRESS_DB_USER=[username]: Stan­dard­vær­di­en er root.
  • -e WORDPRESS_DB_PASSWORD=[password]: Stan­dard­vær­di­en er mil­jøva­ri­ab­len MYSQL_ROOT_PASSWORD fra den til­knyt­te­de MySQL/MariaDB-container.
  • -e WORDPRESS_DB_NAME=[name]: Stan­dard­vær­di­en er "wordpress".

For at øge sik­ker­he­den kan det være en god idé ikke at køre con­tai­ne­re på standard-bridge-netværket. I stedet kan du oprette et bru­ger­de­fi­ne­ret netværk:

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

Her er dine con­tai­ne­re bedre isoleret fra hinanden, hvilket mindsker risikoen for uønskede for­bin­del­ser. Du kan også kon­fi­gu­re­re net­værks­reg­ler­ne mere de­tal­je­ret, f.eks. ved at bruge bru­ger­de­fi­ne­re­de firewall-indstil­lin­ger eller im­ple­men­te­re en reverse proxy.

Sådan afslutter du in­stal­la­tio­nen i en browser

For at gen­nem­fø­re de sidste trin i in­stal­la­tio­nen skal du åbne WordPress-con­tai­ne­ren i en browser.

I eksemplet ovenfor har vi om­di­ri­ge­ret port 8080 på værten til port 80 (web­tje­ne­ster) i con­tai­ne­ren. Det betyder, at du nu kan få adgang til con­tai­ne­ren via din browser enten ved hjælp af serverens IP-adresse eller et do­mæ­ne­navn:

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

Gå til we­badres­sen i din browser, vælg in­stal­la­tions­sprog, og klik på Fortsæt.

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

På den næste skærm vises en besked, der for­be­re­der dig på næste trin i op­sæt­nin­gen. Klik på knappen »Kom så!« for at fortsætte.

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

Indtast nu dine da­ta­ba­se­op­lys­nin­ger, så filen wp-config.php kan oprettes:

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

Bemærk, at stan­dard­bru­ge­ren er »root«, medmindre andet er angivet. Indtast navnet på den database, du har oprettet, samt den ad­gangs­ko­de, du har valgt. Når du klikker på »Send«, bliver du guidet gennem de næste trin i in­stal­la­tio­nen.

Billede: Screenshot of the WordPress installation: site info
Enter the requested in­for­ma­tion about your WordPress site.
  • Web­s­teds­navn: Indtast navnet på dit websted.
  • Bru­ger­navn: Dette er det primære ad­mi­ni­stra­tor­bru­ger­navn til din hjem­mesi­de. Tip: Af sik­ker­heds­mæs­si­ge årsager anbefaler vi, at du ikke bruger ‘Admin’ eller dit do­mæ­ne­navn/din URL.
  • Ad­gangs­ko­de: Sørg for at skrive denne ned, før du fort­sæt­ter.
  • Din e-mail: Dette er den e-mailadres­se, der er knyttet til ad­mi­ni­stra­tor­kon­to­en.

Klik derefter på knappen »Installer WordPress« for at afslutte in­stal­la­tio­nen.

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

Når in­stal­la­tio­nen er færdig, vises der en be­kræf­tel­ses­med­del­el­se, og du kan derefter logge ind på WordPress.

Sådan kører du WordPress med Docker Compose

Brug af Docker Compose er en anden måde at køre WordPress på. Du kan finde vej­led­ning i in­stal­la­tion og brug i vores artikel om Docker-or­ke­stre­ring med Swarm og Compose. Kort sagt giver værktøjet dig mulighed for at definere alle nød­ven­di­ge tjenester i én enkelt fil og starte dem alle på én gang.

Op­ret­tel­se af YAML-filen

Opret først en mappe til dit projekt, og gå ind i den:

sudo mkdir wordpress
cd wordpress

Opret en YAML-fil med navnet docker-compose.yml ved hjælp af følgende kommando:

sudo nano docker-compose.yml

Indholdet af filen varierer en smule, afhængigt af om du bruger MySQL eller MariaDB:

MySQL

Indsæt følgende indhold i filen:

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

Gem filen og luk den.

MariaDB

Indsæt følgende indhold i filen:

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

Gem filen og luk den.

Start af con­tai­ner­ne

Brug derefter Docker Compose til at starte con­tai­ner­ne med følgende kommando:

sudo docker-compose up -d

Brug følgende kommando til at kon­trol­le­re, om con­tai­ner­ne er blevet oprettet:

sudo docker-compose ps

For at afslutte in­stal­la­tio­nen skal du åbne WordPress-con­tai­ne­ren i en browser. Du kan enten bruge serverens IP-adresse eller dens URL:

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

Ku­ber­ne­tes til ska­ler­ba­re WordPress-in­stal­la­tio­ner

Til større in­stal­la­tio­ner og pro­duk­tions­mil­jø­er kan man anvende Ku­ber­ne­tes (K8s). Ku­ber­ne­tes giver mulighed for at ko­or­di­ne­re og au­to­ma­tisk ad­mi­ni­stre­re WordPress-con­tai­ne­re på tværs af flere noder. Brug af et Ku­ber­ne­tes-cluster byder på flere fordele, såsom au­to­ma­tisk skalering, selv­re­pa­re­ren­de me­ka­nis­mer og cen­tra­li­se­ret res­sour­ce­ad­mi­ni­stra­tion. En måde at im­ple­men­te­re dette på er ved hjælp af Helm, en pak­ke­hånd­te­ring til Ku­ber­ne­tes:

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

Dette muliggør en WordPress-in­stal­la­tion med høj til­gæn­ge­lig­hed og ska­ler­bar­hed, herunder be­last­nings­for­de­ling, au­to­ma­ti­ske op­da­te­rin­ger og un­der­støt­tel­se af failover.

Gå til ho­ved­me­nu­en