मैं doer का उपयोग करके php webapp को कॉन्फ़िगर करने का प्रयास कर रहा हूँ। विचार php-fpm
स्टैंडअलोन कंटेनर का उपयोग करके ऐप को चलाने का है और एक अन्य कंटेनर है जो नगनेक्स चलाएगा। इस सेटअप के लिए विचार यह है कि उसी नगनेक्स कंटेनर का उपयोग अन्य वेबएप्स के लिए प्रॉक्सी अनुरोधों के लिए किया जाए जो पहले से ही एक ही मशीन पर काम कर रहे हैं। समस्या यह है कि मैं nginx
स्थिर फ़ाइलों (जेएस, सीएसएस, आदि) को ठीक से संसाधित करने के लिए नहीं मिल सकता हूं , क्योंकि उन लोगों के लिए अनुरोध जारी है fpm
।
यह फाइल सिस्टम जैसा दिखता है:
/
├── Makefile
├── config
│ └── webapp.config
└── webapp
└── web
├── index.php
└── static.js
मैं Makefile
इस तरह लग रहा है का उपयोग कर पूरी बात चला रहा हूँ ( 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
यह मेरे config/webapp.conf
जैसा दिखता है।
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;
}
}
उस index.php
फ़ाइल का उपयोग करके जो भी कार्रवाई करने की आवश्यकता है वह काम करेगा। हालांकि, स्थिर फ़ाइलों को सेवा नहीं दी जाएगी, जिसके परिणामस्वरूप गंदा 404
त्रुटियां होती हैं (जैसे कि php webapp के पास वास्तव में उन लोगों के लिए कॉन्फ़िगर किए गए मार्ग नहीं हैं)। मेरा मानना है कि नगनेक्स अपने खुद के कंटेनर फाइल सिस्टम से लोड करने की कोशिश करता है, जब वे वास्तव में webapp
कंटेनर में होते हैं, तो वापस असफल हो जाते हैं @webapp
।
क्या कोई तरीका है कि मैं nginx
उन फ़ाइलों की सेवा करने के लिए कॉन्फ़िगर कर सकता हूं जो दूसरे कंटेनर में रहते हैं?
nginx
php एप्लिकेशन के भीतर अनुरोध फ़ाइलें नहीं बना रहा हूँ, मैं fpm
ऐसा करने के लिए आसन्न हूँ और मुझे nginx
स्थिर गैर-php फ़ाइलों तक पहुँचने की आवश्यकता है।
webapp
कंटेनर में वॉल्यूम के रूप में घुड़सवार होते हैं, nginx
एक में नहीं ।