Docker kullanarak bir php webapp yapılandırmaya çalışıyorum. Fikir, uygulamayı php-fpmbağımsız bir kapsayıcıda kullanarak çalıştırmak ve nginx çalıştıracak başka bir kapsayıcıya sahip olmaktır. Bu kurulumun amacı, aynı makinede çalışan diğer web uygulamalarına yapılan istekleri proxy yapmak için aynı nginx kapsayıcısını kullanmaktır. Sorun, bu nginxistekleri devam tutmak gibi düzgün statik dosyaları (js, css, vb) işlemek için alamıyorum olmasıdır fpm.
Dosya sistemi şöyle görünür:
/
├── Makefile
├── config
│ └── webapp.config
└── webapp
└── web
├── index.php
└── static.js
Ben böyle bir şey Makefile(bununla ilgilenmiyorum docker-compose) kullanarak her şeyi çalıştırıyorum :
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
İşte böyle config/webapp.confgörünüyor.
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;
}
}
Bu index.phpdosyayı kullanarak işlenmesi gereken her eylem çalışır. Ancak, statik dosyalar sunulmaz, bu da kötü 404hatalara neden olur (php webapp'ın bunlar için yapılandırılmış yolları olmadığından). Ben nginx aslında webappkap içinde olduklarında, kendi kapsayıcı dosya sisteminden yüklemeye çalışır inanıyorum geri @webapp.
nginxBaşka bir kapsayıcıda bulunan dosyaları sunmak için yapılandırabileceğim bir yol var mı ?
nginxphp uygulaması içinde istek dosyaları fpmyapmıyorum, bunu yapmak için proxy ediyorum ve nginxstatik php olmayan dosyalara erişmeniz gerekiyor .
webappkaba değil, birime monte edilirler nginx.