Wordpress in einem Docker Container bereitsstellen

Wordpress in einem Docker Container bereitsstellen

Ich schreibe ab und an ein paar Anleitungen. Da ging es bereits um Nextcloud, Pixelfed oder Mastodon. Nun ein weiteres für WordPress mit eigenem Nginx Client.

Zuerst einen Ordner erstellen für WordPress. In diesem Fall nehme ich /opt/Wordpress.

Ein Globus steht in der Mitte mit Serverrecks und verbunden mit rund um den Globus verteilten Rechnern.
Server Netzwerk Quelle: MidjourneyAI

Docker-compose einrichten

In dem erstellten Ordner as eine ‚docker-compose.yml‘ erstellen und folgendes einfügen.

version: '3'

services:
wordpress:
image: wordpress:latest
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wp-content:/var/www/html/wp-content
ports:
- 8080:80
links:
- db
db:
image: mysql:5.7
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
MYSQL_RANDOM_ROOT_PASSWORD: '1'
nginx:
image: nginx:latest
ports:
- 80:80
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./wp-content:/var/www/html/wp-content
links:
- wordpress

volumes:
- db_data:/var/lib/mysql
volumes:
db_data:

Hier das WordPress Datenbank Passwort, sowie das random_root_password, nach eigenen Wünschen anpassen und die Datei abspeichern.

Nginx config einrichten

Nun eine ’nginx/conf.d/default.conf‘ erstellen und folgenden Inhalt einfügen.

server {
listen 80;
server_name domain.tld;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name localhost;

root /var/www/html;
index index.php index.html index.htm;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

ssl on;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
}

Je nachdem ob schon ein Webserver auf 80 und 443 müssen diese Ports abgeändert werden.

Dies sieht in der docker-compose.yml so aus:

  nginx:
image: nginx:latest
ports:
- 4433:443
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./wp-content:/var/www/html/wp-content
links:
- wordpress

In der Default.conf so:

server {
listen 4433 ssl;
server_name domain.tld;

root /var/www/html;
index index.php index.html index.htm;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

ssl on;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
}

Passt alles, muss nur noch der Webserver und die Docker Container gestartet werden(‚docker-compose up -d‘). Abschließend kann dann das eigentliche WordPress Setup gestartet werden. https://domain.tld/wp-admin