Eu hospedo vários aplicativos Laravel que usam várias versões do PHP e decidi melhorar a configuração atual do Docker de contêiner único e inchado, tendo vários contêineres PHP-FPM, um para cada versão do PHP.
Testei a configuração montando um arquivo PHP em /var/www/html/index.php
todos os contêineres e funcionou conforme o esperado.
No entanto, como os aplicativos Laravel são servidos a partir de um public
subdiretório, isso causa problemas quando o contêiner PHP tenta encontrar o arquivo.
Esta é a configuração do Nginx:
location /appname/ {
alias /var/www/html/appname/public;
index index.php;
# Use PHP 7
location ~ \.php$ {
fastcgi_pass php74:9007;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Portanto, uma solicitação para /appname/index.php
realmente é atendida por /var/www/html/appname/public
, mas os contêineres PHP não sabem disso e não conseguem encontrar o arquivo.
Tentei substituir $document_root
por /var/www/html/appname/public
ou /appname/public
mas nenhum dos dois funcionou.
Este é o erro que o PHP-FPM está lançando:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
Como faço para deixar o PHP saber o caminho para servir corretamente o aplicativo?
Sinta-se à vontade para recomendar uma configuração de contêiner melhor para atingir esse objetivo.