আমি ডকার ব্যবহার করে একটি পিএইচপি ওয়েবপ্যাপ কনফিগার করার চেষ্টা করছি। ধারণাটি হ'ল 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
ত্রুটিগুলি ঘটবে (যেহেতু পিএইচপি ওয়েবপ্যাটে সত্যিই সেগুলির জন্য রুটগুলি কনফিগার করা হয়নি)। আমি বিশ্বাস করি যে এনজিএনেক্সগুলি সেগুলি তার নিজের ধারক ফাইল সিস্টেম থেকে লোড করার চেষ্টা করে, যখন তারা আসলে webapp
ধারকটিতে থাকে, আবার ব্যর্থ হয় @webapp
।
nginx
অন্য ধারকগুলিতে থাকা ফাইলগুলি পরিবেশন করার জন্য কি আমি কনফিগার করতে পারি ?
nginx
পিএইচপি অ্যাপ্লিকেশনটির মধ্যে অনুরোধ ফাইলগুলি তৈরি করছি না , আমি এটি fpm
করতে প্রক্স করছি এবং আমার nginx
স্ট্যাটিক নন-পিএইচপি ফাইল অ্যাক্সেস করতে হবে।
webapp
পাত্রে ভলিউম হিসাবে মাউন্ট করবে, nginx
একটিতে নয়।