Я создал для вас простую суть, чтобы посмотреть, как я это сделаю https://gist.github.com/karlisabe/f7d91594c004e227e504473ce2c60508
Файл конфигурации nginx основан на документации Laravel (https://laravel.com/docs/5.8/deployment#nginx) и, конечно, на производстве выТакже хотелось бы обработать SSL и сопоставить порт 443. Но это должно послужить вам POC.
Обратите внимание, что в конфигурации nginx я использую имя службы php-fpm для передачи запроса в php-fpm.В докере имена сервисов могут использоваться как имена хостов для соответствующих сервисов, поэтому строка fastcgi_pass php-fpm:9000;
означает, что вы передаете запрос в порт 9000 контейнеров php-fpm (порт по умолчанию для прослушиваемого образа fpm)
По сути, вы просто должны определить в nginx, что все 3 ваших поддомена обрабатываются одной и той же конфигурацией сервера, а затем nginx просто передает запрос php-fpm для его фактической обработки.
Чтобы проверить, вы можете просто скопировать два файла из gist в директорию вашего проекта, заменив YOUR_PROJECT_FOLDER в файле docker-compose.yml на acфактическое местоположение вашего проекта (может быть просто.: / var / www / html, если вы поместите docker-compose.yml в корень вашего проекта), затем запустите docker-compose up -d
.Добавьте домены в файл hosts (/ etc / hosts и linux / mac), и вы сможете посетить example.test и увидеть ваш сайт.
Примечание. В зависимости от того, где находится ваша база данных, вы можетенужно изменить хост для него, если это localhost в данный момент, потому что он будет пытаться подключиться к серверу mysql из контейнера php-fpm, на котором, конечно, не работает собственный mysql-сервер.