Die Ausgabe des Baumbefehls in meinem Projektverzeichnis zeigt das folgende Layout.
wobei der Code-Ordner Standard-WordPress-Dateien enthält und der DB-Ordner Container-SQL-Daten dem Host-Verzeichnis zuordnen soll.
Der Inhalt der docker-compose.yml wird hier angezeigt:
mariadb:
container_name: lemp-mariadb
image: mariadb
environment:
- MYSQL_ROOT_PASSWORD=root.maria
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
volumes:
- ./db:/var/lib/mysql
phpfpm:
container_name: lemp-fpm
image: php:7-fpm
volumes:
- ./code:/code
environment:
WORDPRESS_DB_HOST: mariadb
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
links:
- mariadb
command: docker-php-ext-install mysqli
nginx:
container_name: lemp-nginx
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./code:/code
- ./site.conf:/etc/nginx/conf.d/default.conf
links:
- phpfpm
command: nginx -g 'daemon off;'
und unten ist die site.conf-Datei, die die Nginx-Konfiguration zeigt.
server {
listen 80;
root /code;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass phpfpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
wenn ich docker-compose up -d & hit ausführe http://localhost:8080es zeigt 502 Bad Gateway Error.
Warum funktioniert es nicht?? Ich möchte, dass die WordPress-Installationsseite angezeigt wird.
docker ps
Ok, es scheint, dass das Problem auf dem Befehlsschritt im PHPFPM-Dienstabschnitt liegt.
command: docker-php-ext-install mysqli
Wenn ich diese Zeile in der Docker-Compose-Datei kommentiere und ausführe, werden auch Container angezeigt und verbunden, aber ich muss sie über diesen Befehl manuell auf dem fpm-Knoten installieren
docker exec lem-fpm docker-php-ext-install mysqli
&
docker-compose restart
und ich bekomme die wp-installationsseite, aber das ist nicht bequem, macht den ganzen Zweck der Automatisierung und Containerisierung zunichte, ich möchte, dass dieser Prozess automatisiert wird. Also sagen Sie mir bitte, ob es eine Möglichkeit gibt, es nur durch docker-compose zum Laufen zu bringen?