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.
--nginx + php + mysql Umgebung
├── docker-compose.yml
├── nginx
│ └── default.conf
├── php
│ └── Dockerfile
└── www
└── html
└── [WordPress-Datei]
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();
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.
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.
//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.
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 /".
├── docker-compose.yml
├── nginx
│ └── default.conf
├── php
│ └── Dockerfile
└── www
└── html
└── [WordPress-Datei]
Wenn Sie auf http: // localhost: 8080 zugreifen, wird der folgende Bildschirm angezeigt. Datenbankregistrierung. Installation. Geben Sie Site-Informationen und Administrator-Benutzerinformationen ein. Da ich den angemeldeten Benutzer registriert habe, habe ich mich angemeldet.
Sie haben den WordPress-Verwaltungsbildschirm erreicht.
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
$ 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