मैं 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उन फ़ाइलों की सेवा करने के लिए कॉन्फ़िगर कर सकता हूं जो दूसरे कंटेनर में रहते हैं?
nginxphp एप्लिकेशन के भीतर अनुरोध फ़ाइलें नहीं बना रहा हूँ, मैं fpmऐसा करने के लिए आसन्न हूँ और मुझे nginxस्थिर गैर-php फ़ाइलों तक पहुँचने की आवश्यकता है।
webappकंटेनर में वॉल्यूम के रूप में घुड़सवार होते हैं, nginxएक में नहीं ।