Richten Sie eine Wordpress Docker-Umgebung ein, ohne das Worpdress-Image zu verwenden

Ich habe beschlossen, eine Wordpress-Umgebung mit Docker zu erstellen, aber es war ziemlich schwierig, sie ohne Verwendung eines Bildes einzurichten. Daher werde ich sie als Memorandum belassen. Es ist nur meine Aufzeichnung, also kann es einfacher oder falsch sein.

Umgebung

Ultimativer Zweck

Bedingungen, die Sie erreichen möchten

--nginx + php + mysql Umgebung

Version jedes Containers

Dateiorganisation

├── docker-compose.yml
├── nginx
│   └── default.conf
├── php
│   └── Dockerfile
└── www
    └── html
        └── [WordPress-Datei]

Verfahren

  1. Erstellen Sie eine Nginx + PHP-Umgebung
  2. Fügen Sie MySQL hinzu
  3. WordPress hinzufügen und einstellen

1. Erstellen Sie eine Nginx + PHP-Umgebung

Erstellen Sie eine Datei, um jeden Container zu erstellen. Die erste zu erstellende Datei ist:

├── docker-compose.yml
├── nginx
│   └── default.conf
├── php
│   └── Dockerfile
└── www
    └── html
        └── index.php

docker-compose.yml

docker-compose.yml


version: '3'
services:
 nginx:
  image: nginx:1.12.2
  ports:
   - 8080:80
  volumes:
   - ./www/html:/var/www/html
   - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
 
 php:
  build: ./php
  volumes:
   - ./www/html:/var/www/html

nginx/default.conf Fügen Sie eine Beschreibung hinzu, damit index.php auch beim Zugriff auf http: // localhost: 8080 angezeigt wird.

nginx/default.conf


server {
    listen       80;
    server_name  localhost;
    root   /var/www/html;
    #Index hier.PHP hinzufügen
    index  index.html index.htm index.php;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    #Kommentar, damit PHP funktioniert
    location ~ \.php$ {
        root           /var/www/html;
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
        fastcgi_intercept_errors on;
    }

}

php/Dockerfile Sie können es direkt in docker-compose.yml mit image angeben, aber ich erstelle eine Docker-Datei, um die Beschreibung hinzuzufügen, wenn Sie später MySQL hinzufügen.

php/Dockerfile


FROM php:7.2-fpm

www/html/index.php

www/html/index.php


<?php
  phpinfo();

Container-Start

Wechseln Sie mit dem Befehl cd in das Arbeitsverzeichnis und verwenden Sie den folgenden Befehl

// docker-compose.Installieren Sie den in yml beschriebenen Container
$ docker-compose up -d

//Überprüfen Sie, ob der Container erstellt / gestartet wurde(-Durch Hinzufügen von a können Container angezeigt werden, die noch nicht gestartet wurden.)
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
0aed3ada6a01        docker_wp_php       "docker-php-entrypoi…"   19 seconds ago      Up 17 seconds       9000/tcp               task4_wp
b698e1032798        nginx:1.12.2        "nginx -g 'daemon of…"   19 seconds ago      Up 17 seconds       0.0.0.0:8080->80/tcp   docker_wp_nginx_1

Wenn Sie auf http: // localhost: 8080 zugreifen und phpinfo angezeigt wird, ist dies erfolgreich.

2. Fügen Sie MySQL hinzu

Es gibt keine Ergänzungen oder Änderungen an der Dateistruktur, aber es gibt Ergänzungen zu "php / Dockerfile" und "docker-compose.yml", wenn MySQL hinzugefügt wird.

php/Dockerfile

php/Dockerfile



FROM php:7.2-fpm

//Fügen Sie die folgenden 2 Zeilen hinzu
RUN apt-get update
RUN docker-php-ext-install pdo_mysql mysqli

docker-compose.yml

docker-compose.yml


version: '3'
services:
 nginx:
  image: nginx:1.12.2
  ports:
   - 8080:80
  volumes:
   - ./www/html:/var/www/html
   - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
 
 php:
  build: ./php
  container_name: "task4_wp"
  volumes:
   - ./www/html:/var/www/html
 
 //Fügen Sie die Beschreibung von MySQL unten hinzu
 db:
  image: mysql:5.6
  ports:
   - 3306:3306
  environment:
   MYSQL_DATABASE: wordpress
   MYSQL_ROOT_PASSWORD: root
   MYSQL_USER: user
   MYSQL_PASSWORD: password
  volumes:
   - wp_db:/var/lib/mysql

volumes:
 wp_db:

MYSQL_USER und MYSQL_PASSWORD stellen den Benutzer so ein, dass er sich später bei MySQL anmeldet. MYSQL_DATABASE ist die Datenbank, die beim Einfügen von WordPress verwendet wird. Außerdem wird der Inhalt der Datenbank nicht wie "www / html" gemountet, sondern als Volume außerhalb der Datei platziert.

Starten Sie den Container neu

//Stoppen Sie den soeben erstellten Container und löschen Sie ihn
$ docker-compose down

// docker-compose.Starten Sie den in yml beschriebenen Container
$ docker-compose up -d

//Überprüfen Sie, ob der Container erstellt / gestartet wurde
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
9e9d13e9441f        nginx:1.12.2        "nginx -g 'daemon of…"   3 minutes ago       Up 3 minutes        0.0.0.0:8080->80/tcp     docker_wp_nginx_1
19451d8dfd82        docker_wp_php       "docker-php-entrypoi…"   3 minutes ago       Up 3 minutes        9000/tcp                 docker_wp_php_1
7f37f92bed6a        mysql:5.6           "docker-entrypoint.s…"   3 minutes ago       Up 3 minutes        0.0.0.0:3306->3306/tcp   docker_wp_db_1

Wenn Sie auf http: // localhost: 8080 zugreifen, sollte phpinfo wie zuvor angezeigt werden. Es ändert sich an der Oberfläche nicht, aber wenn STATUS UP ist, ist der Start erfolgreich.

3. WordPress hinzufügen und einstellen

Zum Schluss setzen Sie WordPress. Sie können WordPress von der folgenden Seite herunterladen. https://ja.wordpress.org/download/ Löschen Sie "/ www / html / index.php", entpacken und kopieren Sie den Inhalt von "wordpress /" und kopieren Sie ihn nach "www / html /".

Dateiorganisation

├── docker-compose.yml
├── nginx
│   └── default.conf
├── php
│   └── Dockerfile
└── www
    └── html
        └── [WordPress-Datei]

Wenn Sie auf http: // localhost: 8080 zugreifen, wird der folgende Bildschirm angezeigt. スクリーンショット 2020-09-29 20.53.06.png Datenbankregistrierung. https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_481714_d321077c-de34-778b-145c-429722abf7c6.png Installation. スクリーンショット 2020-09-29 21.32.26.png Geben Sie Site-Informationen und Administrator-Benutzerinformationen ein. スクリーンショット 2020-09-28 14.26.59.png Da ich den angemeldeten Benutzer registriert habe, habe ich mich angemeldet. スクリーンショット 2020-09-29 21.42.47.png

Sie haben den WordPress-Verwaltungsbildschirm erreicht. スクリーンショット 2020-09-29 21.53.48.png

Wo ich erwischt wurde

Volumes verstehen

Der Code, den ich dieses Mal geschrieben habe, enthält auch Beschreibungen sowohl innerhalb als auch außerhalb des Containers. Ich habe verstanden, dass die internen Volumes dazu dienen, Dateien lokal für den Container freizugeben, aber die externen haben eine etwas andere Beschreibungsmethode, und ist der Ordnerspeicherort nicht an erster Stelle angegeben? Liegt es nicht an der Montierung ...? Ich fragte mich, ob ich es nicht benutzen sollte. Betrachtung. Dieser Artikel war leicht zu verstehen. Docker hat Volume ernsthaft untersucht

Häufig verwendete Befehle

$ docker-compose up -d
//Das Docker direkt unter dem aktuellen Ordner-compose.Führen Sie yml im Hintergrund aus

$ docker-compose stop
// docker-compose.Stoppen Sie den in yml geschriebenen Container

$ docker-compose start
//Starten Sie den Container

$ docker-compose down
//Container stoppen → löschen
$ docker-compose down --rmi all -v
// docker-compose.Alle in yml beschriebenen Container, Bilder und erstellten Volumes verschwinden.

$ docker exec -it [Container ID] /bin/bash
//Melden Sie sich beim Container an (Container-ID ist`docker ps`Kann bestätigt werden bei)

$ docker ps
//Laufende Container auflisten
$ docker ps -a
//Zeigen Sie alle Container an, die nicht gestartet wurden

$ docker images
//Listen Sie Bilder auf

$ docker rm [Container ID]
//Löschen Sie den Container. Beim Versuch, einen laufenden Container zu löschen, wird eine Fehlermeldung angezeigt
$ docker rm [Container ID] -f
//Löschen Sie den Container. Zwangsweise löschen, auch wenn es sich bewegt

$ docker rmi [Bild-ID]
//Löschen Sie das Bild. Ich erhalte eine Fehlermeldung, wenn ein Container vorhanden ist
$ docker rmi [Bild-ID] -f
//Löschen Sie das Bild. Zwangsweise löschen, auch wenn ein Container vorhanden ist

Recommended Posts

Richten Sie eine Wordpress Docker-Umgebung ein, ohne das Worpdress-Image zu verwenden
Erstellen Sie eine Browsertestumgebung mit Capybara in der Docker-Entwicklungsumgebung
Erstellen Sie mit Docker schnell eine Webumgebung
Erstellen Sie mit Docker eine Wordpress-Entwicklungsumgebung
Erstellen Sie mit Docker sofort eine Privoxy + Tor-Umgebung
Erstellen Sie mit Docker schnell eine WordPress-Entwicklungsumgebung
Schieben Sie das Image mit Jib zum Docker-Hub
Bis zum Start eines Docker-Containers, der mit RedHat Quarkus erstellt wurde
Finden Sie den Rest geteilt durch 3, ohne eine Zahl zu verwenden
Ein Befehl, der die lokale Docker-Umgebung definitiv bereinigt
Versuchen Sie, mit Docker eine Java-Entwicklungsumgebung zu erstellen
Erstellen Sie ein Docker-Image mit installiertem Oracle JDK (yum
Ich habe versucht, die Umgebung nach und nach mit Docker aufzubauen
Richten Sie GitLab mit Docker ein
Was Docker-Anfänger vor dem Einrichten der Nginx-Lernumgebung getan haben
Richten Sie mit Bitnamis AMI ganz einfach einen Jenkins-Server in AWS ein
Installieren Sie Docker unter Ubuntu und richten Sie die Remoteverbindung mit tls ein
So stellen Sie das Bild mithilfe der Symbolschriftart (Symbole) links / rechts von der Schaltfläche auf zeichnbar ein
Erstellen Sie mit Docker eine Vue3-Umgebung!
Erstellen Sie mit Docker eine Node.js-Umgebung
Schreiben Sie einen Nullfall mit dem Typ Optional, ohne die if-Anweisung zu verwenden
Minimale Schritte zum Einrichten einer Ruby-Umgebung mit rbenv unter Ubuntu 20.04
Richten Sie eine Java-GUI in einem separaten Thread ein, um die Haupt-GUI beizubehalten