Sa.. Apr. 19th, 2025

WordPress in einem Docker Container bereitsstellen

Bylars

28. Dezember 2022 ,

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 in einem Dockersetup.

Zuerst einen Ordner erstellen. In diesem Fall nehme ich /opt/Wordpress.

a golden docker logo on a black background

Docker-compose einrichten

In dem erstellten Ordner wird nun eine docker-compose.yml erstellt und folgendes eingefügt. Für eine reibungslose Einrichtung von WordPress, stellen Sie sicher, dass alle Details korrekt sind.

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:Code-Sprache: JavaScript (javascript)

Hier das 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. Dies erleichtert die Konfiguration mit WordPress erheblich.

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;
}

Code-Sprache: PHP (php)

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:
      - wordpressCode-Sprache: JavaScript (javascript)

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;
}Code-Sprache: PHP (php)

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

Mehr Anleitungen zu allen möglichen Projekten die ich bisher in das Leben gerufen habe, findet ihr unter dem Hashtag “Anleitung” auf meinem Blog. Beispiele sind: Nextcloud, Pixelfed, Gluetun VPN und vieles mehr.

Klicke, um diesen Beitrag zu bewerten!
[Gesamt: 0 Durchschnitt: 0]

Bylars

Ich bin 44 Jahre alt und blogge seit mehreren Jahren. Beruflich bin ich Fachangestellter für Bäderbetriebe. Lebe und liebe diesen Beruf in und rundum Fulda. Habe eine Partnerin und liebe genauso meinen Dackel.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert