Ошибка 502 неверного шлюза при развертывании WordPress на Dockerized Lemp? - PullRequest
2 голосов
/ 06 мая 2019

Вывод команды дерева в директории моего проекта показывает следующий макет.

enter image description here

, где папка кода содержит стандартные файлы WordPress, а папка БД - для сопоставленияконтейнер данных sql в каталог хоста.

содержимое docker-compose.yml показано здесь:

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

и ниже - файл site.conf, который показывает конфигурацию nginx.

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

, когда я запускаю docker-compose up -d & hit http://localhost:8080,, это показывает 502 ошибку шлюза.

enter image description here

Почему это не работает ??Я хочу показать страницу установки WordPress.

docker ps

enter image description here

Хорошо, похоже, проблема заключается в шаге команды в разделе службы phpfpm.

command: docker-php-ext-install mysqli

Если я комментирую эту строку в файле docker-compose и запускаю ее, контейнеры тоже подходят и подключаются, но я должен вручную установить ее на узле fpm с помощью этой команды

docker exec lem-fpm docker-php-ext-install mysqli

&

docker-compose restart

и я получаю страницу установки wp, но это не удобно, убивает всю цель автоматизации и контейнеризации, я хочу, чтобы этот процесс был автоматизирован, поэтому, пожалуйста, скажите, есть ли способзаставить его работать только через docker-compose only ??

Ответы [ 2 ]

2 голосов
/ 06 мая 2019

Создайте сценарий оболочки (start.sh), поместите его рядом с вашим docker-compose.yml и сделайте его исполняемым:

#!/bin/bash

docker-php-ext-install mysqli

php-fpm

Отобразите его внутри вашего сервиса и измените команду:

phpfpm:
 container_name: lemp-fpm
 image: php:7-fpm
 volumes:
  - ./code:/code
  - ./start.sh:/usr/local/bin/start.sh
 environment:
  WORDPRESS_DB_HOST: mariadb
  WORDPRESS_DB_USER: wordpress
  WORDPRESS_DB_PASSWORD: wordpress
  WORDPRESS_DB_NAME: wordpress
 links:
  - mariadb
 command: /usr/local/bin/start.sh
0 голосов
/ 06 мая 2019

Вы должны сопоставить «./code» с чем-то вроде «/ var / www / code» вместо «/ code».Затем измените корень в site.conf: "root /var/www/code".

На вашем последнем экране печати я вижу, что вы перенаправлены на / code и этого не должно происходить.Остальная часть вашей конфигурации выглядит хорошо.

Хорошую ссылку вы также можете увидеть на официальной странице: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...