Próbuję skonfigurować aplikację internetową php przy użyciu okna dokowanego. Chodzi o to, aby uruchomić aplikację php-fpmw oddzielnym kontenerze i mieć inny kontener, który będzie działał nginx. Ideą tego ustawienia jest użycie tego samego kontenera nginx do przesyłania żądań proxy do innych aplikacji internetowych, które już działają na tym samym komputerze. Problem polega na tym, że nie mogę nginxpoprawnie przetworzyć plików statycznych (js, css itp.), Ponieważ żądania do nich wciąż się pojawiają fpm.
Tak wygląda system plików:
/
├── Makefile
├── config
│ └── webapp.config
└── webapp
└── web
├── index.php
└── static.js
Korzystam z Makefiletego, który wygląda tak (nie jestem tym zainteresowany docker-compose):
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
Tak config/webapp.confwygląda mój .
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;
}
}
Działa dowolne działanie, które musi zostać przetworzone przy użyciu tego index.phppliku. Jednak pliki statyczne nie będą obsługiwane, co spowoduje nieprzyjemne 404błędy (ponieważ aplikacja sieci web php tak naprawdę nie ma skonfigurowanych tras dla nich). Wierzę, że nginx próbuje załadować te pliki ze swojego własnego systemu plików kontenera, gdy faktycznie znajdują się w webappkontenerze, ale nie powracają do @webapp.
Czy istnieje sposób, w jaki mogę skonfigurować nginxobsługę plików znajdujących się w innym kontenerze?
nginxplików żądań w aplikacji php, jestem fpmdo tego proxy i muszę nginxuzyskać dostęp do statycznych plików innych niż php.
webappkontenerze, a nie w nginxjednym.