Sto cercando di configurare una webapp php usando la finestra mobile. L'idea è di eseguire l'app utilizzando php-fpm
un contenitore autonomo e disporre di un altro contenitore che eseguirà nginx. L'idea per questa configurazione è quella di utilizzare lo stesso contenitore nginx per inoltrare richieste ad altre webapp che stanno già lavorando sullo stesso computer. Il problema è che non riesco nginx
a elaborare correttamente i file statici (js, css, ecc.), Poiché le richieste a quelli continuano fpm
.
Ecco come appare il filesystem:
/
├── Makefile
├── config
│ └── webapp.config
└── webapp
└── web
├── index.php
└── static.js
Sto eseguendo il tutto usando un Makefile
che assomiglia a questo (non interessato a docker-compose
questo):
PWD:=$(shell pwd)
CONFIG:='/config'
WEBAPP:='/webapp'
run: | run-network run-webapp run-nginx
run-network:
docker network create internal-net
run-webapp:
docker run --rm \
--name=webapp \
--net=internal-net \
--volume=$(PWD)$(WEBAPP):/var/www/webapp:ro \
-p 9000:9000 \
php:5.6.22-fpm-alpine
run-nginx:
docker run --rm \
--name=nginx \
--net=internal-net \
--volume=$(PWD)$(CONFIG)/webapp.conf:/etc/nginx/conf.d/webapp.domain.com.conf:ro \
-p 80:80 \
nginx:1.11.0-alpine
Ecco config/webapp.conf
come appare il mio .
server {
listen 80;
server_name webapp.domain.com;
# This is where the index.php file is located in the webapp container
# This folder will contain an index.php file and some static files that should be accessed directly
root /var/www/webapp/web;
location / {
try_files $uri $uri/ @webapp;
}
location @webapp {
rewrite ^(.*)$ /index.php$1 last;
}
location ~ ^/index\.php(/|$) {
include fastcgi_params;
fastcgi_pass webapp:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
}
Qualsiasi azione che deve essere elaborata utilizzando quel index.php
file funzionerà. Tuttavia, i file statici non verranno offerti, con conseguenti 404
errori negativi (poiché la webapp php non ha percorsi configurati per quelli). Credo che nginx tenti di caricare quelli dal proprio filesystem contenitore, quando sono effettivamente nel webapp
contenitore, fallendo nuovamente @webapp
.
C'è un modo che posso configurare nginx
per servire quei file che risiedono in un altro contenitore?
nginx
file di richiesta all'interno dell'applicazione php, sto facendo il proxy fpm
per farlo e ho bisogno nginx
di accedere a file statici non php.
webapp
contenitore, non in nginx
quello.