Смонтируйте именованный том WordPress в подкаталог контейнера NGINX с помощью docker-compose - PullRequest
0 голосов
/ 14 апреля 2019

Следующая конфигурация правильно обслуживает экземпляр WordPress. (Некоторые несоответствующие детали конфигурации опущены для краткости.)

докер-compose.yml

version: "3.7"

services:
  nginx:
    image: nginx:alpine
    links:
      - wordpress-1
    volumes:
      - wordpress-1_files:/var/www/html

  wordpress-1:
    image: wordpress:php7.3-fpm-alpine
    volumes:
      - wordpress-1_files:/var/www/html

volumes:
  wordpress-1_files:

WordPress-1.conf

server {
  server_name wordpress-1.com;
  root /var/www/html;

  index index.php;

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

  location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
        fastcgi_pass wordpress-1:9000;
  }
}

Однако я бы хотел смонтировать том wordpress-1_files в подкаталог (/var/www/html/wordpress-1) в контейнере nginx (чтобы я мог обслуживать несколько приложений из одного прокси-сервера NGINX). Приведенная ниже конфигурация возвращает 404 с File not found. в теле ответа. Этот результат происходит с любой из двух SCRIPT_FILENAME строк в wordpress-1.conf ниже.

докер-compose.yml

version: "3.7"

services:
  nginx:
    image: nginx:alpine
    links:
      - wordpress-1
    volumes:
      - wordpress-1_files:/var/www/html/wordpress-1

  wordpress-1:
    image: wordpress:php7.3-fpm-alpine
    volumes:
      - wordpress-1_files:/var/www/html

volumes:
  wordpress-1_files:

WordPress-1.conf

server {
  server_name wordpress-1.com;
  root /var/www/html/wordpress-1;

  index index.php;

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

  location ~ \.php$ {
        include fastcgi_params;
        # fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
        fastcgi_param SCRIPT_FILENAME /var/www/html/wordpress-1$fastcgi_script_name;
        fastcgi_pass wordpress-1:9000;
  }
}

Когда я проверяю NGINX error_log в debug, я вижу это:

FastCGI отправил в stderr: «Основной сценарий неизвестен» во время чтения заголовок ответа от апстрима, клиент: 555.69.70.132, сервер: wordpress-1.com, запрос: "GET / HTTP / 1.1", upstream: "fastcgi: //172.18.0.3: 9000", хост: "wordpress-1.com"

Это наводит меня на мысль, что есть проблема с SCRIPT_FILENAME, но ни /var/www/html$fastcgi_script_name, ни /var/www/html/wordpress-1$fastcgi_script_name, похоже, не работают.

Вопрос:

Как мне настроить вторую пару файлов конфигурации, чтобы я мог обслуживать WordPress при монтировании тома WordPress в каталог, отличный от /var/www/html в контейнере nginx?

Примечание. Приведенный выше пример является уменьшенным, минимальным примером проблемы, которую я пытаюсь решить. Фактический проект, над которым я работаю, закончен здесь .

1 Ответ

0 голосов
/ 14 апреля 2019

Тьфу, оказывается, мое тестирование было просто недостаточно тщательным (несмотря на то, что я занимался этим несколько дней и продолжал). Решение было на самом деле с использованием:

fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;

Это потому, что внутри изображения wordpress:php7.3-fpm-alpine, это путь к файлам WordPress.

Во время моего тестирования я забыл отключить кеширование CloudFlare, которое находилось перед моим промежуточным сайтом. Итак, мои тесты не всегда проверяли то, что я думал ...

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