এখানে দুটি সম্ভাব্য উত্তর রয়েছে: (১) সরাসরি ডকারের সাথে সেটআপ পোর্ট এবং ভোস্টগুলি প্রক্সি করার জন্য এনগিনেক্স / অ্যাপাচি ব্যবহার করুন, বা (২) আপনার জন্য পোর্ট এবং ভোস্টগুলি পরিচালনা করতে ডক্কু ব্যবহার করুন (এটিই আমি পদ্ধতিটি ১ করতে শিখেছি)।
পদ্ধতি 1 এ (সরাসরি ডকারের সাথে পোর্টগুলি বরাদ্দ করুন)
পদক্ষেপ 1: হোস্টে nginx.conf বা অ্যাপাচি সেট করুন, পছন্দসই পোর্ট নম্বর অ্যাসাইনমেন্ট সহ। হোস্টে চলমান এই ওয়েব সার্ভারটি ভোস্ট প্রক্সিং করবে। ডকারের ক্ষেত্রে এ সম্পর্কে বিশেষ কিছু নেই - এটি সাধারণ ভোস্ট হোস্টিং। ডকারকে সঠিক হোস্ট পোর্ট নম্বরটি ব্যবহার করার জন্য, দ্বিতীয় অংশটি পরবর্তী অংশে আসে next
পদক্ষেপ 2: ডকারের পোর্ট ম্যাপিংস সেট করতে "-p" দিয়ে ডকারে পোর্ট নম্বর ক্রিয়াকলাপ এবং ফোনের মধ্যে কাস্টম এনভায়রনমেন্ট ভেরিয়েবল সেট করার জন্য "-e" চাপ দিন:
port=12345
IMAGE=myapps/container-1
id=$(docker run -d -p :$port -e PORT=$port $IMAGE)
echo $id
echo $id > /app/files/CONTAINER
docker ps
docker logs $id
docker kill $id
পদ্ধতি 1 বি হার্ড-কোডেড অ্যাপ্লিকেশন পোর্ট
... আপনি যদি অ্যাপ্লিকেশনটিতে একটি হার্ডকোডযুক্ত পোর্ট ব্যবহার করেন, উদাহরণস্বরূপ পোর্ট 5000 (যেমন পোর্ট এনভায়রনমেন্ট ভেরিয়েবলের মাধ্যমে কনফিগার করা যায় না, পদ্ধতি 1 এ যেমন) তবে ডকারের মাধ্যমে এটি হার্ডকোড করা যেতে পারে:
publicPort=12345
id=$(docker run -d -p $publicPort:5000 $IMAGE)
পদ্ধতি 2 (ডক্কু বন্দরগুলি বের করতে দিন)
এই মুহুর্তে, ডকার vhosts পরিচালনার জন্য খুব ভাল বিকল্প হ'ল ডক্কু । একটি আসন্ন বিকল্পটি ফ্লিন ব্যবহার করা হতে পারে , তবে ঠিক এখনই ফ্লিন সবে শুরু করছে এবং বেশ প্রস্তুত নয়। অতএব আমরা এখনই ডক্কুর সাথে যাচ্ছি: একক ডোমেনের জন্য ডক্কু ইনস্টল নির্দেশাবলী অনুসরণ করার পরে "ভিএইচএসটি" ফাইল তৈরি করে ভোস্টগুলি সক্ষম করুন:
echo yourdomain.com > /home/git/VHOST
এখন, যখন কোনও অ্যাপ্লিকেশন এসএসএইচের মাধ্যমে ডক্কুতে প্রেরণ করা হয় (এটি কীভাবে করা যায় তার জন্য ডক্কু ডক্স দেখুন), ডক্কু ভিএইচএসটি ফাইল এবং নির্দিষ্ট অ্যাপ্লিকেশনটির দিকে লক্ষ্য করবে (ধরা যাক আপনি "ধারক -১" ধাক্কা দিয়েছিলেন), এটি উত্পন্ন হবে নিম্নলিখিত ফাইল:
/home/git/container-1/nginx.conf
এবং এটিতে নিম্নলিখিত বিষয়বস্তু থাকবে:
upstream container-1 { server 127.0.0.1:49162; }
server {
listen 80;
server_name container-1.yourdomain.com;
location / {
proxy_pass http://container-1;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
যখন সার্ভারটি পুনরায় বুট করা হবে, তখন ডক্কু নিশ্চিত করবে যে এলোমেলোভাবে অন্য কোনও বন্দর নির্ধারণের পরিবর্তে ডকার তার প্রাথমিকভাবে মোতায়েন বন্দরে (49162 এখানে) ম্যাপযুক্ত পোর্ট দিয়ে অ্যাপ্লিকেশন শুরু করবে। এই নির্বিরোধী কার্য সম্পাদন করার জন্য, ডক্কু প্রাথমিকভাবে নির্ধারিত বন্দরটিকে সংরক্ষণ /home/git/container-1/PORT
করে এবং পরবর্তী প্রবর্তনে এটি PORT
পরিবেশটিকে এই মান হিসাবে নির্ধারণ করে এবং ডকারের পোর্ট অ্যাসাইনমেন্টটিকে হোস্ট-সাইড এবং অ্যাপ্লিকেশন উভয় স্থানেই মানচিত্রটি মানচিত্র করে। এটি প্রথম লঞ্চের বিরোধী, যখন ডক্কু সেট করবে PORT=5000
এবং তারপরে ভিপিএসের পাশের ডক্কু মানচিত্রের যেকোন মানচিত্রটি অ্যাপের পাশের 5000 এ বের করবে। এটি প্রায় (এবং ভবিষ্যতে এমনকি পরিবর্তন হতে পারে) চারপাশে, কিন্তু এটি কার্যকর!
হুডের নীচে ভিএইচএসটি যেভাবে কাজ করে তা হ'ল: এসএসএইচ-এর মাধ্যমে অ্যাপ্লিকেশনটির গিট ধাক্কা দেওয়ার পরে, ডক্কু বাস করে এমন হুকগুলি কার্যকর করবে /var/lib/dokku/plugins/nginx-vhosts
। এই হুকগুলি এখানে ডক্কু উত্স কোডেও nginx.conf
রয়েছে এবং সঠিক ভোস্ট সেটিংস সহ ফাইলগুলি লেখার জন্য দায়বদ্ধ । যদি আপনার এই ডিরেক্টরিটি এর অধীনে না থাকে /var/lib/dokku
তবে চালনার চেষ্টা করুন dokku plugins-install
।