Dockerisierung von WordPress mit Nginx und PHP-FPM auf Ubuntu 16.04

Docker-Compose ist ein Kommandozeilen-Tool zur Definition und Verwaltung von Multi-Container-Docker-Containern, als ob sie ein einziger Dienst wären. Compose ist in Python geschrieben und kann mit dem Python-pip-Befehl installiert werden. Mit compose können wir mehrere Andockcontainer mit nur einem einzigen Befehl ausführen. Es ermöglicht Ihnen, einen Container als Service zu erstellen, was sich hervorragend für Ihre Entwicklungs-, Test- und Staging-Umgebung eignet.

In diesem Tutorial werde ich Sie Schritt für Schritt anleiten, um Docker-Compose-Verfahren zu verwenden. Wir werden ‚Wordpress‚ mit Nginx, MySQL und PHP-FPM einsetzen. Jeder Dienst hat seinen eigenen Container, und wir werden Bilder aus der Registrierung der Docker-Hubs verwenden. Ich zeige Ihnen, wie Sie Container aus Docker-Bildern erstellen und alle Container mit Docker-Compose verwalten können.

Voraussetzung

  • Ubuntu 16.04
  • Root-Privilegien

Schritt 1 – Docker installieren

Wir werden bei Null anfangen, indem wir Docker und Docker Composer manuell mit dem Befehl apt installieren.

Bevor wir beginnen, sollten Sie das Ubuntu-Repository aktualisieren und die neuesten Updates installieren:

sudo apt-get update
sudo apt-get upgrade

Standardmäßig ist der Docker im Ubuntu-Repository verfügbar, so dass wir ihn sofort weiter installieren können:

sudo apt-get install -y docker.io

Wenn die Installation abgeschlossen ist, starten Sie den Docker und fügen Sie ihn hinzu, damit er beim Booten automatisch startet:

systemctl start docker
systemctl enable docker

Testen Sie nun Ihre Docker-Installation mit dem folgenden Befehl:

docker run hello-world

Sie werden die Hallo-Welt vom Dock aus sehen.

Schritt 2 – Docker-Compose installieren

Docker-compose ist ein in Python geschriebenes Skript, es ist im PyPI-Python-Repository verfügbar und kann mit Python-Pip installiert werden. Wir müssen also zuerst Python und Python-Pip auf unserem System installieren.

Installieren Sie Python und Python-pip:

sudo apt-get install -y python python-pip

Als nächstes installieren Sie docker-compose mit dem Befehl pip:

pip install docker-compose

Warten Sie auf den Abschluss des Installationsprozesses. Überprüfen Sie dann die Installation mit dem Befehl docker-compose:

docker-compose -v

Sie erhalten die Docker-Compose-Version.

Schritt 3 – WordPress einrichten

Jetzt sind Docker und Docker-Composite auf dem System installiert. In diesem Schritt zeigen wir Ihnen, wie Sie die Docker-Compose-Umgebung für unser WordPress-Projekt erstellen und einrichten.

Wir werden die PHP-Anwendung ‚Wordpress‘ mit Nginx als Webserver und MariaDB für die MySQL-Datenbank als Docker-Container einsetzen, die von docker-compose verwaltet werden. Jede Anwendung (WordPress, Nginx und MySQL) läuft in einem eigenen Container, wie Sie der untenstehenden Liste entnehmen können:

Nginx: Wir verwenden das offizielle Docker-Bild, neueste Version ’nginx: latest‘.

WordPress: WordPress stellt einige Docker-Bilder auf Docker-Hub zur Verfügung, und wir werden WordPress 4.7 mit PHP-FPM 7.0 darauf verwenden.

MySQL: Wir werden den offiziellen MariaDB-Container in der neuesten Version verwenden.

Wir benötigen also 3 Docker-Images aus der Docker-Hub-Registrierung.

Wir werden Docker nicht als Root ausführen, sondern normale Linux-Benutzer verwenden. Erstellen Sie also einfach einen neuen Benutzer mit dem folgenden Befehl (Sie können hier gerne einen anderen Benutzernamen verwenden, stellen Sie nur sicher, dass der Benutzer noch nicht existiert. Wenn Sie einen anderen Namen wählen, stellen Sie sicher, dass Sie ihn in allen Befehlen, die in diesem Tutorial folgen, ändern):

useradd -m -s /bin/bash hakase
passwd hakase

Fügen Sie nun den Benutzer zur ‚Docker‚-Gruppe hinzu, damit der Benutzer den Docker-Befehl verwenden kann, und starten Sie den Docker-Dienst neu:

usermod -a -G docker hakase
systemctl restart docker

Melden Sie sich bei dem Benutzer ‚hakase‘ an und erstellen Sie ein neues Verzeichnis für das WordPress-Projekt:

su - hakase
mkdir -p wordpress-compose
cd wordpress-compose/

Als nächstes erstellen Sie eine neue Datei mit dem Namen ‚docker-compose.yml‚ und legen ein neues Verzeichnis für das Projekt an. Geben Sie einfach die folgenden Befehle ein:

touch docker-compose.yml
mkdir -p nginx/
mkdir -p db-data/
mkdir -p logs/nginx/
mkdir -p wordpress/

Datei- und Verzeichnisliste des Projekts:

docker-compose.yml: Dies ist die Docker-Compose-Konfigurationsdatei, die Sie beim Start eines neuen Docker-Compose-Projekts erstellen müssen.

nginx/: Dieses Verzeichnis wird für unsere zusätzliche nginx-Konfiguration wie den virtuellen Host usw. verwendet.

db-data/: Das Volume/Verzeichnis für die mysql-Daten. Die Sql aus den Daten ‚/var/lib/mysql‘ wird in das Verzeichnis db-data eingehängt.

Protokolle/: Verzeichnis für Anwendungsprotokoll, nginx, mariadb und php-fpm.

wordpress/: Alle WordPress-Dateien werden in diesem Verzeichnis verfügbar sein.

Erstellen Sie im Verzeichnis ’nginx‘ eine neue Konfigurationsdatei für unseren virtuellen WordPress Host.

Erstellen Sie eine neue Datei wordpress.conf:

vim nginx/wordpress.conf

Konfiguration unten einfügen:

server {
    listen 80;
    server_name wp-hakase.co;

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

access_log /var/log/nginx/hakase-access.log;
error_log /var/log/nginx/hakase-error.log;

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

location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}

Speichern Sie die Datei und beenden Sie vim.

Schritt 4 – Konfigurieren Sie Docker-Composite

In diesem Schritt beginnen wir mit der Bearbeitung der Datei docker-compose.yml. Wenn Sie das docker-compose Projekt starten wollen, stellen Sie sicher, dass Sie zuerst die Datei docker-compose.yml erstellen, wie wir es unten tun.

Bearbeiten Sie die docker-compose.yml mit vim:

vim docker-compose.yml

Definieren Sie Ihre Dienstleistungen, in der ersten Zeile werden wir Nginx definieren. Wir verwenden das offizielle Docker-Image von Nginx, die neueste Version, und konfigurieren die Portzuordnung von Port 80 auf dem Container zu Port 80 auf dem Host. Als nächstes konfigurieren Sie die Docker-Volumes, das Volume für unsere Konfiguration des virtuellen Nginx-Hosts, das Volume für die Nginx-Logdateien und das Web-Stammverzeichnis-Volume ‚/var/www/html‘. Der Nginx-Container ist mit dem WordPress-Container verknüpft.

Konfiguration unten einfügen:

nginx:
    image: nginx:latest
    ports:
        - '80:80'
    volumes:
        - ./nginx:/etc/nginx/conf.d
        - ./logs/nginx:/var/log/nginx
        - ./wordpress:/var/www/html
    links:
        - wordpress
    restart: always

Als nächstes definieren Sie den MySQL-Server. Wir verwenden das MariaDB-Bild, neueste Version. Konfigurieren Sie die Portzuordnung für den Container auf Port 3306 und konfigurieren Sie das MySQL-Root-Passwort mit der Umgebungsvariablen ‚MYSQL_ROOT_PASSWORD‘. Schließlich konfigurieren Sie das Containervolumen für das MySQL-Datenverzeichnis.

Konfiguration unten einfügen:

mysql:
    image: mariadb
    ports:
        - '3306:3306'
    volumes:
        - ./db-data:/var/lib/mysql
    environment:
        - MYSQL_ROOT_PASSWORD=aqwe123
    restart: always

Dann werden wir den WordPress-Dienst konfigurieren, indem wir das WordPress 4.7 Docker-Bild mit installiertem PHP-FPM 7.0 verwenden. Konfigurieren Sie den Port für PHP-fpm auf Port 9000, aktivieren Sie das Dockervolumen für das Webverzeichnis ‚/var/www/html‘ zum Host-Verzeichnis ‚wordpress‘, richten Sie die Datenbank ein, indem Sie die WordPress-Umgebungsvariable definieren, und verknüpfen Sie den WordPress-Dienst mit mysql.

Konfiguration unten einfügen:

wordpress:
    image: wordpress:4.7.1-php7.0-fpm
    ports:
        - '9000:9000'
    volumes:
        - ./wordpress:/var/www/html
    environment:
        - WORDPRESS_DB_NAME=wpdb
        - WORDPRESS_TABLE_PREFIX=wp_
        - WORDPRESS_DB_HOST=mysql
        - WORDPRESS_DB_PASSWORD=aqwe123
    links:
        - mysql
    restart: always

Nachdem Sie die drei Teile in die Datei docker-compose.yml eingefügt haben, speichern Sie die Datei und beenden Sie den vim-Editor.

Unsere Docker-Konfiguration ist fertig.

Schritt 5 – Ausführen von Docker-Composite

Beginnen Sie mit der Erstellung der neuen Container mit Docker-Composite. Gehen Sie in das Verzeichnis wordpress-compose und starten Sie die neuen Container auf der Grundlage unserer Compoise-Datei.

cd ~/wordpress-compose/
docker-compose up -d

Sie können die Ergebnisse des Befehls sehen. Es wurden drei Container erstellt. Überprüfen wir den Containerstatus mit der Option ps:

docker-compose ps

Unten ist das Ergebnis aufgeführt:

Docker starten - WordPress komponieren

Wenn Sie die Protokollausgabe aus dem Container sehen möchten, können Sie die folgenden Befehle verwenden:

docker-compose logs nginx
docker-compose logs mysql
docker-compose logs wordpress

Container-Protokolle:

ein Beispiel für den Befehl docker-compose logs

Hinweis:
Wenn Sie im WordPress-Containerprotokoll einen Fehler über eine abgelehnte MySQL-Verbindung sehen, ignorieren Sie ihn.

Schritt 6 – WordPress installieren

Bevor wir diesen Schritt durchführen, sollten wir die verfügbaren Ports/offenen Ports auf dem System überprüfen. Stellen Sie sicher, dass Sie 3 Ports geöffnet haben, Port 80, 3306 und Port 9000.

netstat -plntu

Die Ergebnisse sind unten aufgeführt:

Port offener Dock

Öffnen Sie nun Ihren Webbrowser und geben Sie die Server-URL oder die IP-Adresse ein.

http://serverIP/

Sie können die Installationsseite von WordPress sehen. Wählen Sie Ihre Sprache und klicken Sie auf ‚Weiter‚.

Wordpress Installationssatz Sprache

Geben Sie Ihre Website-Details wie Website-Titel, Admin-Benutzer und Passwort, Ihre E-Mail-Adresse ein und klicken Sie dann auf ‚Wordpress installieren‚.

Wordpress installieren Benutzer- und Site-Konfiguration ausfüllen

Sie werden zum ‚Wordpress Admin Dashboard‚ weitergeleitet.

Wordpress Admin Dashboard Docker-Compose

Und dies ist mein WordPress-Beispiel für den Post-Hallo-Welt.

Wordpress mit Docker-Composite

WordPress wurde mit docker-compose installiert.

Schritt 7 – Zugriff auf den Dockerbehälter

Dies ist ein zusätzlicher Schritt, wie man auf einen Container mit Docker-Composite zugreifen kann. Prüfen Sie, ob alle Container verfügbar sind und zeigen Sie deren Status an:

docker-compose ps

Wir haben bereits 3 Container, jetzt können wir versuchen, uns bei jedem Container anzumelden. Melden Sie sich beim ersten Nginx-Container mit dem Befehl docker-compose an.

docker-compose exec nginx bash

nginx: Dienstname auf der Datei docker-compose docker-compose.yml

bash: Ausführen des bash-Shell-Befehls

Überprüfen Sie jetzt unsere Konfiguration des virtuellen WordPress Hosts.

cat /etc/nginx/conf.d/wordpress.conf

Nginx Docker komponieren Dienst

Die Dateien sind im Container verfügbar.

Versuchen Sie als nächstes, sich in den mysql-Container einzuloggen, und melden Sie sich dann in der mysql-Shell mit unserem Passwort auf der Compile-Datei an.

docker-compose exec mysql bash
mysql -u root -p
TYPE MYSQL ROOT PASSWORD

Siehe die Liste der Datenbanken:

show databases;

Sie sehen unsere WordPress-Datenbank.

MySQL-Docker-Dienst Verfassen

Im ‚wordpress‘-Container sehen Sie alle WordPress-Dateien.

docker-compose exec wordpress bash
ls -lah

Wordpress mit PHP-FPM-Docker komponieren

Alle Container sind zugänglich.

Referenz

Das könnte dich auch interessieren …