মডিউল 4: ডকার দিয়ে Google অ্যাপ ইঞ্জিন থেকে ক্লাউড রানে মাইগ্রেট করুন

1. ওভারভিউ

কোডল্যাবগুলির এই সিরিজের (স্ব-গতিসম্পন্ন, হাতে-কলমে টিউটোরিয়াল) লক্ষ্য হল Google অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড) বিকাশকারীদের তাদের অ্যাপ্লিকেশানগুলিকে একাধিক মাইগ্রেশনের মাধ্যমে গাইড করে তাদের আধুনিকীকরণে সহায়তা করা৷ একবার এটি সম্পন্ন হলে, ব্যবহারকারীরা তাদের অ্যাপগুলিকে স্পষ্টভাবে ক্লাউড রান , অ্যাপ ইঞ্জিনে Google ক্লাউডের কন্টেইনার-হোস্টিং বোন পরিষেবা এবং অন্যান্য কন্টেইনার-হোস্টিং পরিষেবাগুলির জন্য কন্টেইনারাইজ করার মাধ্যমে আরও পোর্টেবল করে তুলতে পারে৷

এই টিউটোরিয়ালটি আপনাকে শেখায় যে কীভাবে ক্লাউড রানের সম্পূর্ণ-পরিচালিত পরিষেবাতে মোতায়েন করার জন্য অ্যাপ ইঞ্জিন অ্যাপগুলিকে কনটেইনারে ডেভেলপ করা, শিপিং এবং চালানোর জন্য শিল্পের একটি সুপরিচিত প্ল্যাটফর্ম ডকার ব্যবহার করে। পাইথন 2 বিকাশকারীদের জন্য, এই টিউটোরিয়ালটি মডিউল 2 ক্লাউড এনডিবি অ্যাপ ইঞ্জিনের নমুনা অ্যাপ দিয়ে শুরু হয় যখন পাইথন 3 বিকাশকারীরা মডিউল 3 ক্লাউড ডেটাস্টোর নমুনা দিয়ে শুরু করে।

আপনি কিভাবে শিখবেন

  • ডকার ব্যবহার করে আপনার অ্যাপ কন্টেইনারাইজ করুন
  • ক্লাউড রানে কন্টেইনার ইমেজ স্থাপন করুন

আপনি কি প্রয়োজন হবে

সমীক্ষা

আপনি কিভাবে এই কোডল্যাব ব্যবহার করবেন?

শুধুমাত্র এটি মাধ্যমে পড়ুন এটি পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

2. পটভূমি

অ্যাপ ইঞ্জিন এবং ক্লাউড ফাংশনের মতো PaaS সিস্টেমগুলি আপনার দল এবং অ্যাপ্লিকেশনের জন্য অনেক সুবিধা প্রদান করে। উদাহরণ স্বরূপ, এই সার্ভারবিহীন প্ল্যাটফর্মগুলি SysAdmin/Devops কে বিল্ডিং সমাধানগুলিতে ফোকাস করতে সক্ষম করে। আপনার অ্যাপ্লিকেশানটি প্রয়োজন অনুসারে অটোস্কেল করতে পারে, প্রতি-ব্যবহার-প্রতি-ব্যবহার বিলিংয়ের সাহায্যে খরচ নিয়ন্ত্রণে শূন্যে স্কেল করতে পারে এবং তারা বিভিন্ন সাধারণ উন্নয়ন ভাষা ব্যবহার করে।

যাইহোক, কন্টেইনারগুলির নমনীয়তাও বাধ্যতামূলক, যে কোনও ভাষা, যে কোনও লাইব্রেরি, যে কোনও বাইনারি বেছে নেওয়ার ক্ষমতা। ব্যবহারকারীদের উভয় জগতের সর্বোত্তম প্রদান, সার্ভারহীন সুবিধা এবং কনটেইনারগুলির নমনীয়তা, যা Google ক্লাউড রানের বিষয়।

ক্লাউড রান কীভাবে ব্যবহার করতে হয় তা শেখা এই কোডল্যাবের সুযোগের মধ্যে নেই; যেটি ক্লাউড রান ডকুমেন্টেশন দ্বারা আচ্ছাদিত। ক্লাউড রান (বা অন্যান্য পরিষেবা) এর জন্য আপনার অ্যাপ ইঞ্জিন অ্যাপকে কীভাবে কনটেইনারাইজ করবেন তা জানতে এখানে লক্ষ্য হল। এগিয়ে যাওয়ার আগে আপনার কিছু জিনিস জানা উচিত, প্রাথমিকভাবে আপনার ব্যবহারকারীর অভিজ্ঞতা কিছুটা ভিন্ন হবে, কিছুটা নিম্ন-স্তরের কারণ আপনি আর অ্যাপ্লিকেশন কোড গ্রহণ করবেন না এবং এটি স্থাপন করবেন না।

পরিবর্তে, আপনাকে কনটেইনারগুলি সম্পর্কে কিছু শিখতে হবে যেমন কীভাবে সেগুলি তৈরি এবং স্থাপন করা যায়। আপনি একটি ওয়েব সার্ভার সহ কন্টেইনার ইমেজে কী রাখতে চান তাও আপনি সিদ্ধান্ত নিতে পারেন কারণ আপনি আর অ্যাপ ইঞ্জিনের ওয়েব সার্ভার ব্যবহার করবেন না। আপনি যদি এই পথটি অনুসরণ না করতে পছন্দ করেন তবে অ্যাপ ইঞ্জিনে আপনার অ্যাপগুলি রাখা খারাপ বিকল্প নয়।

এই টিউটোরিয়ালে, আপনি শিখবেন কীভাবে আপনার অ্যাপকে কনটেইনারাইজ করতে হয়, অ্যাপ ইঞ্জিন কনফিগারেশন ফাইলগুলিকে কনটেইনার কনফিগারেশন দিয়ে প্রতিস্থাপন করে, কনটেইনারে কী যায় তা নির্ধারণ করুন, তারপরে আপনার অ্যাপ কীভাবে শুরু করবেন তা উল্লেখ করুন — এইগুলির অনেকগুলিই অ্যাপ ইঞ্জিন দ্বারা স্বয়ংক্রিয়ভাবে পরিচালনা করা হয়।

এই স্থানান্তর এই পদক্ষেপগুলি বৈশিষ্ট্যযুক্ত:

  1. সেটআপ/প্রিওয়ার্ক
  2. কন্টেইনারাইজ অ্যাপ্লিকেশন
    • কনফিগারেশন ফাইল প্রতিস্থাপন
    • অ্যাপ্লিকেশন ফাইলগুলি পরিবর্তন করুন

3. সেটআপ/প্রিওয়ার্ক

আমরা টিউটোরিয়ালের মূল অংশ নিয়ে যাওয়ার আগে, আসুন আমাদের প্রকল্প সেট আপ করি, কোড পাই, তারপর বেসলাইন অ্যাপটি স্থাপন করি যাতে আমরা জানি যে আমরা কাজের কোড দিয়ে শুরু করেছি।

1. সেটআপ প্রকল্প

আপনি যদি মডিউল 2 বা মডিউল 3 কোডল্যাবগুলি সম্পন্ন করেন, আমরা সেই একই প্রকল্প (এবং কোড) পুনরায় ব্যবহার করার পরামর্শ দিই। বিকল্পভাবে, আপনি একটি একেবারে নতুন প্রকল্প তৈরি করতে পারেন বা অন্য একটি বিদ্যমান প্রকল্প পুনরায় ব্যবহার করতে পারেন। নিশ্চিত করুন যে প্রকল্পটির একটি সক্রিয় বিলিং অ্যাকাউন্ট আছে এবং অ্যাপ ইঞ্জিন (অ্যাপ) সক্ষম আছে।

2. বেসলাইন নমুনা অ্যাপ পান

এই কোডল্যাবের পূর্বশর্তগুলির মধ্যে একটি হল একটি কার্যকরী মডিউল 2 বা মডিউল 3 নমুনা অ্যাপ। আপনার যদি এটি না থাকে তবে এখানে এগিয়ে যাওয়ার আগে যেকোন একটি টিউটোরিয়াল (উপরের লিঙ্কগুলি) সম্পূর্ণ করুন। অন্যথায় আপনি যদি ইতিমধ্যেই এর বিষয়বস্তুগুলির সাথে পরিচিত হন তবে আপনি নীচের মডিউল 2 বা 3 কোডটি ধরে শুরু করতে পারেন।

আপনি আপনার বা আমাদের ব্যবহার করুন না কেন, মডিউল 2 কোডটি যেখানে আমরা এই টিউটোরিয়ালটির পাইথন 2 সংস্করণের জন্য শুরু করব, এবং একইভাবে, পাইথন 3-এর জন্য মডিউল 3 কোড। এই মডিউল 4 কোডল্যাবটি আপনাকে প্রতিটি ধাপে নিয়ে যাবে, এবং এর উপর নির্ভর করে আপনার বিকল্পগুলি, আপনি সম্পূর্ণ হলে মডিউল 4 রেপো ফোল্ডারের (FINISH) সাথে সাদৃশ্যপূর্ণ কোড দিয়ে শেষ করবেন।

পাইথন 2 মডিউল 2 স্টার্টিং ফাইলের ডিরেক্টরি (আপনার বা আমাদের) এইরকম হওয়া উচিত:

$ ls
README.md               appengine_config.py     requirements.txt
app.yaml                main.py                 templates

আপনি যদি নিজের মডিউল 2 (2.x) কোড ব্যবহার করেন তবে আপনার একটি lib ফোল্ডারও থাকবে। Python 3 এর জন্য lib বা appengine_config.py উভয়ই ব্যবহার করা হয় না, যেখানে মডিউল 3 (3.x) STARTing কোডটি এইরকম হওয়া উচিত:

$ ls
README.md               main.py                 templates
app.yaml                requirements.txt

3. (পুনরায়) বেসলাইন অ্যাপ স্থাপন করুন

এখন চালানোর জন্য আপনার অবশিষ্ট প্রিওয়ার্ক পদক্ষেপগুলি:

  1. gcloud কমান্ড-লাইন টুলের সাথে নিজেকে পুনরায় পরিচিত করুন
  2. gcloud app deploy সাথে নমুনা অ্যাপটি পুনরায় স্থাপন করুন
  3. অ্যাপটি অ্যাপ ইঞ্জিনে সমস্যা ছাড়াই চলে তা নিশ্চিত করুন

একবার আপনি সফলভাবে এই পদক্ষেপগুলি কার্যকর করার পরে, আপনি এটিকে ধারণ করতে প্রস্তুত৷

4. কন্টেইনারাইজ অ্যাপ্লিকেশন

ডকার আজ শিল্পের স্ট্যান্ডার্ড কন্টেইনারাইজেশন প্ল্যাটফর্ম। এটি ব্যবহার করার ক্ষেত্রে একটি চ্যালেঞ্জ, যেমনটি আগে উল্লিখিত হয়েছে, এটি হল একটি দক্ষ Dockerfile , কনফিগারেশন ফাইল যা আপনার কন্টেইনার ছবিগুলি কীভাবে তৈরি করা হয় তা নির্ধারণ করার জন্য প্রচেষ্টার প্রয়োজন। অন্যদিকে, বিল্ডপ্যাক-এর জন্য সামান্য প্রচেষ্টার প্রয়োজন কারণ এটি আপনার অ্যাপের নির্ভরতা নির্ধারণ করতে আত্মদর্শন ব্যবহার করে, বিল্ডপ্যাক কন্টেইনারটিকে আপনার অ্যাপের জন্য যতটা সম্ভব দক্ষ করে তোলে।

আপনি সঠিক জায়গায় আছেন যদি আপনি ইতিমধ্যেই কন্টেইনার, ডকার সম্পর্কে জানেন এবং ক্লাউড রানের জন্য আপনার অ্যাপ ইঞ্জিন অ্যাপকে কনটেইনারাইজ করার বিষয়ে আরও জানতে চান। পরে মডিউল 5 কোডল্যাব (এটির মতো কিন্তু ক্লাউড বিল্ডপ্যাকগুলির সাথে) নির্দ্বিধায় করতে পারেন৷ আমাদের বেয়ারবোনস নমুনা অ্যাপটি পূর্বোক্ত Dockerfile সমস্যাগুলির কিছু এড়াতে যথেষ্ট হালকা।

মাইগ্রেশন পদক্ষেপগুলির মধ্যে রয়েছে অ্যাপ ইঞ্জিন কনফিগারেশন ফাইলগুলি প্রতিস্থাপন করা এবং আপনার অ্যাপটি কীভাবে শুরু করা উচিত তা উল্লেখ করা। নীচে প্রতিটি প্ল্যাটফর্ম প্রকারের জন্য প্রত্যাশিত কনফিগারেশন ফাইলগুলির সংক্ষিপ্তসার একটি টেবিল রয়েছে৷ ডকার কলামের সাথে অ্যাপ ইঞ্জিন কলামের তুলনা করুন (এবং ঐচ্ছিকভাবে বিল্ডপ্যাকগুলি):

বর্ণনা

অ্যাপ ইঞ্জিন

ডকার

বিল্ডপ্যাকস

সাধারণ কনফিগারেশন

app.yaml

Dockerfile

( service.yaml )

তৃতীয় পক্ষের লাইব্রেরি

requirements.txt

requirements.txt

requirements.txt

তৃতীয় পক্ষের কনফিগারেশন

app.yaml (প্লাস appengine_config.py এবং lib [2.x-only])

(n/a)

(n/a)

স্টার্টআপ

(n/a) বা app.yaml (যদি entrypoint ব্যবহার করা হয়)

Dockerfile

Procfile

ফাইলগুলি উপেক্ষা করুন

.gcloudignore এবং .gitignore

.gcloudignore , .gitignore , এবং .dockerignore

.gcloudignore এবং .gitignore

একবার আপনার অ্যাপ কন্টেইনারাইজড হয়ে গেলে, এটি ক্লাউড রানে স্থাপন করা যেতে পারে। অন্যান্য Google ক্লাউড কন্টেইনার প্ল্যাটফর্ম বিকল্পগুলির মধ্যে রয়েছে Compute Engine , GKE , এবং Anthos

সাধারণ কনফিগারেশন

অ্যাপ ইঞ্জিন থেকে স্থানান্তরিত করার অর্থ হল একটি Dockerfile দিয়ে app.yaml প্রতিস্থাপন করা যা কন্টেইনার তৈরি এবং চালানোর রূপরেখা দেয়৷ অ্যাপ ইঞ্জিন স্বয়ংক্রিয়ভাবে আপনার অ্যাপ্লিকেশন শুরু করে, কিন্তু ক্লাউড রান করে না। Dockerfile ENTRYPOINT এবং CMD কমান্ডের জন্য এটি। এই ক্লাউড রান ডক্স পৃষ্ঠা থেকে Dockerfile সম্পর্কে আরও জানুন পাশাপাশি Dockerfile একটি উদাহরণ দেখুন যা gunicorn তৈরি করে।

একটি Dockerfile ENTRYPOINT বা CMD ব্যবহার করার একটি বিকল্প হল একটি Procfile ব্যবহার করা। অবশেষে, একটি .dockerignore আপনার কন্টেইনারের আকার কম রাখতে নন-অ্যাপ ফাইলগুলিকে ফিল্টার করতে সাহায্য করে। এই আসছে আরো!

app.yaml মুছুন এবং Dockerfile তৈরি করুন

app.yaml পাত্রে ব্যবহার করা হয় না তাই এটি এখন মুছে দিন । কন্টেইনার কনফিগারেশন ফাইলটি হল Dockerfile , এবং আমাদের নমুনা অ্যাপের জন্য শুধুমাত্র একটি ন্যূনতম প্রয়োজন। আপনি কোন পাইথন সংস্করণ ব্যবহার করছেন তার উপর নির্ভর করে NNN 2 বা 3 দিয়ে প্রতিস্থাপন করে এই সামগ্রীর সাথে আপনার Dockerfile তৈরি করুন:

FROM python:NNN-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
ENTRYPOINT ["python", "main.py"]

বেশিরভাগ Dockerfile নির্দিষ্ট করে কিভাবে ENTRYPOINT বাদে কন্টেইনার তৈরি করতে হয় যা নির্দিষ্ট করে কিভাবে কন্টেইনার শুরু করতে হয় , এই ক্ষেত্রে ফ্লাস্ক ডেভেলপমেন্ট সার্ভার চালানোর জন্য python main.py কল করা হয়। আপনি যদি ডকারে নতুন হন, তাহলে FROM নির্দেশিকা নির্দেশ করে যে বেস ইমেজ থেকে শুরু হবে, এবং "স্লিম" একটি ন্যূনতম পাইথন বিতরণকে নির্দেশ করে। ডকার পাইথন ইমেজ পৃষ্ঠা থেকে আরও জানুন।

কমান্ডের মাঝামাঝি সেটটি কার্যকরী ডিরেক্টরি ( /app ) তৈরি করে, অ্যাপ্লিকেশন ফাইলগুলিতে অনুলিপি করে, তারপর কন্টেইনারে তৃতীয় পক্ষের লাইব্রেরি আনতে pip install চালায়। WORKDIR লিনাক্স mkdir এবং cd কমান্ডকে একত্রিত করে; WORKDIR ডকুমেন্টেশনে এটি সম্পর্কে আরও পড়ুন। COPY এবং RUN নির্দেশাবলী স্ব-ব্যাখ্যামূলক।

তৃতীয় পক্ষের লাইব্রেরি

requirements.txt ফাইল একই থাকতে পারে; আপনার ডেটাস্টোর ক্লায়েন্ট লাইব্রেরির সাথে ফ্লাস্ক থাকা উচিত (ক্লাউড ডেটাস্টোর বা ক্লাউড এনডিবি)। আপনি যদি Gunicorn-এর মতো অন্য একটি WSGI-সম্মত HTTP সার্ভার ব্যবহার করতে চান — এই লেখার সময় বর্তমান সংস্করণ হল 20.0.4 — তাহলে gunicorn==20.0.4 requirements.txt এ যোগ করুন।

তৃতীয় পক্ষের কনফিগারেশন

Python 2 অ্যাপ ইঞ্জিন বিকাশকারীরা জানেন যে 3য়-পক্ষের লাইব্রেরিগুলি হয় lib ফোল্ডারে অনুলিপি করা হয়, requirements.txt এ উল্লেখ করা হয়, app.yaml এ আইটেমাইজ করা হয় এবং appengine_config.py দ্বারা সমর্থিত। appengine_config.py 3 অ্যাপ ইঞ্জিন অ্যাপের মতো কন্টেইনারগুলি lib requirements.txt .

স্টার্টআপ

পাইথন 2 ব্যবহারকারীরা অ্যাপ ইঞ্জিনের ওয়েব সার্ভার স্টার্টআপ করেন না, তবে একটি কন্টেইনারে যাওয়ার সময়, আপনাকে এটি করতে হবে। এটি আপনার Dockerfile একটি CMD বা ENTRYPOINT নির্দেশিকা যোগ করে করা হয় যাতে আপনার অ্যাপটি কীভাবে শুরু করতে হয় তা উল্লেখ করা হয় এবং এটি পাইথন 3 ব্যবহারকারীদের জন্য একইভাবে বর্ণনা করা হয়েছে।

Python 3 ব্যবহারকারীদের তাদের app.yaml ফাইলগুলিকে স্ক্রিপ্টের পরিবর্তে একটি entrypoint রূপান্তর করার বিকল্প রয়েছে: তাদের handlers বিভাগে script: auto নির্দেশাবলী। আপনি যদি আপনার Python 3 app.yamlentrypoint ব্যবহার করেন তবে এটি দেখতে এরকম কিছু হবে:

runtime: python38
entrypoint: python main.py

entrypoint নির্দেশিকা অ্যাপ ইঞ্জিনকে বলে যে কীভাবে আপনার সার্ভার শুরু করবেন। আপনি এটিকে প্রায় সরাসরি আপনার Dockerfile (অথবা Procfile যদি Buildpacks ব্যবহার করেন [দেখুন মডিউল 5] আপনার অ্যাপকে কনটেইনারাইজ করতে)। উভয় প্ল্যাটফর্মের মধ্যে একটি এন্ট্রিপয়েন্ট নির্দেশিকা কোথায় যাবে তার সংক্ষিপ্ত বিবরণ:

  • ডকার: Dockerfile লাইন: ENTRYPOINT ["python", "main.py"]
  • বিল্ডপ্যাকস: Procfile লাইন: web: python main.py

ফ্লাস্ক ডেভেলপমেন্ট সার্ভার ব্যবহার করা পরীক্ষার জন্য ঠিক আছে, কিন্তু যদি আপনার অ্যাপ্লিকেশনের জন্য gunicorn এর মতো একটি প্রোডাকশন সার্ভার ব্যবহার করেন, তাহলে Cloud Run Quickstart নমুনার মতো এটিতে আপনার ENTRYPOINT বা CMD নির্দেশিকা নির্দেশ করতে ভুলবেন না।

ফাইলগুলি উপেক্ষা করুন

আমরা আপনার কন্টেইনারের আকার ট্রিম করার জন্য একটি .dockerignore ফাইল তৈরি করার পরামর্শ দিই এবং এই ধরনের অপ্রয়োজনীয় ফাইলগুলির সাথে আপনার কন্টেইনারের ছবিকে বিশৃঙ্খল না করে:

*.md
*.pyc
*.pyo
.git/
.gitignore
__pycache__

অ্যাপ্লিকেশন ফাইল

সমস্ত মডিউল 2 বা মডিউল 3 অ্যাপগুলি সম্পূর্ণরূপে পাইথন 2-3 সামঞ্জস্যপূর্ণ, যার অর্থ main.py এর মূল উপাদানগুলিতে কোনও পরিবর্তন নেই; আমরা শুধুমাত্র স্টার্টআপ কোডের কয়েকটি লাইন যোগ করব। ডেভেলপমেন্ট সার্ভার শুরু করতে main.py এর নীচে এক জোড়া লাইন যোগ করুন কারণ ক্লাউড রানের জন্য পোর্ট 8080 খোলা থাকা প্রয়োজন যাতে এটি আপনার অ্যাপকে কল করতে পারে:

if __name__ == '__main__':
    import os
    app.run(debug=True, threaded=True, host='0.0.0.0',
            port=int(os.environ.get('PORT', 8080)))

5. নির্মাণ এবং স্থাপন

ডকার কনফিগারেশন এবং সোর্স ফাইল আপডেট সম্পূর্ণ হওয়ার সাথে সাথে, আপনি ক্লাউড রানে এটি চালানোর জন্য প্রস্তুত। তার আগে, সংক্ষেপে পরিষেবাগুলি নিয়ে আলোচনা করা যাক৷

পরিষেবা বনাম অ্যাপস

অ্যাপ ইঞ্জিন প্রাথমিকভাবে অ্যাপ্লিকেশান হোস্ট করার জন্য তৈরি করা হলেও, এটি মাইক্রোসার্ভিসের একটি সংগ্রহের সমন্বয়ে গঠিত ওয়েব পরিষেবা বা অ্যাপ্লিকেশন হোস্ট করার জন্য একটি প্ল্যাটফর্মও। ক্লাউড রানে, সবকিছুই একটি পরিষেবা, তা একটি প্রকৃত পরিষেবা হোক বা একটি ওয়েব ইন্টারফেস সহ একটি অ্যাপ্লিকেশন, তাই এটির ব্যবহারকে একটি অ্যাপ্লিকেশনের পরিবর্তে একটি পরিষেবার স্থাপনা হিসাবে বিবেচনা করুন৷

আপনার অ্যাপ ইঞ্জিন অ্যাপটি একাধিক পরিষেবার সমন্বয়ে গঠিত না হলে, আপনার অ্যাপ্লিকেশনগুলি স্থাপন করার সময় আপনাকে সত্যিই কোনো ধরনের নামকরণ করতে হবে না। এটি ক্লাউড রানের সাথে পরিবর্তিত হয় যেখানে আপনাকে একটি পরিষেবার নাম নিয়ে আসতে হবে৷ যেখানে একটি অ্যাপ ইঞ্জিনের appspot.com ডোমেনে তার প্রোজেক্ট আইডি রয়েছে, যেমন, https://PROJECT_ID.appspot.com এবং সম্ভবত এটি অঞ্চল আইডি সংক্ষিপ্ত রূপ, যেমন, http://PROJECT_ID.REGION_ID.r.appspot.com

যাইহোক, একটি ক্লাউড রান পরিষেবার জন্য ডোমেনে তার পরিষেবার নাম , অঞ্চলের আইডি সংক্ষিপ্ত রূপ এবং একটি হ্যাশ বৈশিষ্ট্যযুক্ত, কিন্তু প্রকল্প আইডি নয়, যেমন, https://SVC_NAME-HASH-REG_ABBR.a.run.app । নীচের লাইন, একটি পরিষেবার নাম চিন্তা করা শুরু করুন!

পরিষেবা স্থাপন করুন

আপনার কন্টেইনার ইমেজ তৈরি করতে এবং ক্লাউড রানে স্থাপন করতে নীচের কমান্ডটি চালান। প্রম্পট করা হলে, আপনার অঞ্চল নির্বাচন করুন এবং সহজ পরীক্ষার জন্য অননুমোদিত সংযোগগুলিকে অনুমতি দিন এবং উপযুক্ত হিসাবে আপনার অঞ্চল নির্বাচন করুন যেখানে SVC_NAME হল সেই পরিষেবাটির নাম যা আপনি স্থাপন করছেন৷

$ gcloud beta run deploy SVC_NAME --source .
Please choose a target platform:
 [1] Cloud Run (fully managed)
 [2] Cloud Run for Anthos deployed on Google Cloud
 [3] Cloud Run for Anthos deployed on VMware
 [4] cancel
Please enter your numeric choice:  1

To specify the platform yourself, pass `--platform managed`. Or, to make this the default target platform, run `gcloud config set run/platform managed`.

Please specify a region:
 [1] asia-east1
 [2] asia-east2
 [3] asia-northeast1
 [4] asia-northeast2
 [5] asia-northeast3
 [6] asia-south1
 [7] asia-southeast1
 [8] asia-southeast2
 [9] australia-southeast1
 [10] europe-north1
 [11] europe-west1
 [12] europe-west2
 [13] europe-west3
 [14] europe-west4
 [15] europe-west6
 [16] northamerica-northeast1
 [17] southamerica-east1
 [18] us-central1
 [19] us-east1
 [20] us-east4
 [21] us-west1
 [22] us-west2
 [23] us-west3
 [24] us-west4
 [25] cancel
Please enter your numeric choice: <select your numeric region choice>

To make this the default region, run `gcloud config set run/region REGION`.

Allow unauthenticated invocations to [SVC_NAME] (y/N)?  y

Building using Dockerfile and deploying container to Cloud Run service [SVC_NAME] in project [PROJECT_ID] region [REGION]
✓ Building and deploying new service... Done.
  ✓ Uploading sources...
  ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/BUILD-HASH?project=PROJECT_NUM].
  ✓ Creating Revision... Deploying Revision.
  ✓ Routing traffic...
  ✓ Setting IAM Policy...
Done.
Service [SVC_NAME] revision [SVC_NAME-00001-vos] has been deployed and is serving 100 percent of traffic.
Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app

স্থাপন সফল হয়েছে নিশ্চিত করতে আপনার ব্রাউজারের সাথে নির্দিষ্ট URL-এ যান!

যেমন gcloud কমান্ড নির্দেশ করে, ব্যবহারকারীরা উপরে দেখানো হিসাবে আউটপুট এবং ইন্টারঅ্যাক্টিভিটি কমাতে বিভিন্ন ডিফল্ট সেটিংস সেট করতে পারেন। উদাহরণস্বরূপ, সমস্ত মিথস্ক্রিয়া এড়াতে, আপনি পরিবর্তে নিম্নলিখিত ওয়ান-লাইনার ডিপ্লোয় কমান্ড ব্যবহার করতে পারেন:

$ gcloud beta run deploy SVC_NAME --source . --platform managed --region REGION --allow-unauthenticated

আপনি যদি এটি ব্যবহার করেন, তবে একই পরিষেবার নাম SVC_NAME এবং পছন্দসই REGION নাম নির্বাচন করতে ভুলবেন না, সূচীকৃত মেনু নির্বাচন নয় যেভাবে আমরা উপরে ইন্টারেক্টিভভাবে করেছি৷

6. সারাংশ/পরিষ্কার

নিশ্চিত করুন যে অ্যাপটি ক্লাউড রানে অ্যাপ ইঞ্জিনের মতো কাজ করে। আপনি যদি পূর্ববর্তী কোডল্যাবগুলির কোনওটি না করে এই সিরিজে ঝাঁপিয়ে পড়েন তবে অ্যাপটি নিজেই পরিবর্তন হবে না; এটি মূল ওয়েব পৃষ্ঠায় সমস্ত পরিদর্শন নিবন্ধন করে ( / ) এবং আপনি একবার সাইটটিতে পর্যাপ্ত বার পরিদর্শন করার পরে এটির মতো দেখায়:

ভিজিটমি অ্যাপ

আপনার কোড এখন মডিউল 4 রেপো ফোল্ডারে যা আছে তার সাথে মেলে, তা 2.x বা 3.x হোক না কেন। এই মডিউল 4 কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন।

ঐচ্ছিক: পরিষ্কার করুন

আপনি পরবর্তী মাইগ্রেশন কোডল্যাবে যাওয়ার জন্য প্রস্তুত না হওয়া পর্যন্ত বিল এড়াতে পরিষ্কার করার বিষয়ে কী করবেন? যেহেতু আপনি এখন একটি ভিন্ন পণ্য ব্যবহার করছেন, তাই ক্লাউড রান মূল্য নির্দেশিকা পর্যালোচনা করতে ভুলবেন না।

ঐচ্ছিক: পরিষেবা অক্ষম করুন

আপনি যদি পরবর্তী টিউটোরিয়ালে যেতে এখনও প্রস্তুত না হন, অতিরিক্ত চার্জ এড়াতে আপনার পরিষেবা অক্ষম করুন ৷ আপনি যখন পরবর্তী কোডল্যাবে যাওয়ার জন্য প্রস্তুত হন, আপনি এটি পুনরায় সক্ষম করতে পারেন৷ আপনার অ্যাপটি অক্ষম থাকাকালীন, এটি চার্জ করার জন্য কোনও ট্রাফিক পাবে না, তবে আরেকটি জিনিস যা আপনি বিল পেতে পারেন তা হল আপনার ডেটাস্টোর ব্যবহার যদি এটি বিনামূল্যের কোটা অতিক্রম করে, তাই সেই সীমার মধ্যে পড়ার জন্য যথেষ্ট মুছে ফেলুন৷

অন্যদিকে, আপনি যদি মাইগ্রেশন চালিয়ে যেতে না চান এবং সবকিছু সম্পূর্ণরূপে মুছে ফেলতে চান, আপনি হয় আপনার পরিষেবা মুছে ফেলতে পারেন বা আপনার প্রকল্প সম্পূর্ণরূপে বন্ধ করে দিতে পারেন

পরবর্তী পদক্ষেপ

অভিনন্দন, আপনি আপনার অ্যাপটি কন্টেইনারাইজ করেছেন, যা এই টিউটোরিয়ালটি শেষ করেছে! এখান থেকে, পরবর্তী ধাপ হল মডিউল 5 কোডল্যাবে (নীচে লিঙ্ক) ক্লাউড বিল্ডপ্যাকগুলির সাথে একই জিনিস কীভাবে করতে হয় বা অন্য অ্যাপ ইঞ্জিন মাইগ্রেশনের মাধ্যমে কাজ করতে হয় সে সম্পর্কে শিখতে হবে:

  • Python 3 এ মাইগ্রেট করুন যদি আপনি ইতিমধ্যে না থাকেন। নমুনা অ্যাপটি ইতিমধ্যেই 2.x এবং 3.x সামঞ্জস্যপূর্ণ, তাই একমাত্র পরিবর্তন হল ডকার ব্যবহারকারীদের জন্য একটি পাইথন 3 চিত্র ব্যবহার করার জন্য তাদের Dockerfile আপডেট করা।
  • মডিউল 5: ক্লাউড বিল্ডপ্যাক সহ ক্লাউড রানে মাইগ্রেট করুন
    • ক্লাউড বিল্ডপ্যাকগুলির সাথে ক্লাউড রানে চালানোর জন্য আপনার অ্যাপটি কন্টেইনারাইজ করুন
    • ডকার, কন্টেইনার বা Dockerfile সম্পর্কে আপনার কিছু জানার দরকার নেই
    • আপনার অ্যাপটি ইতিমধ্যেই পাইথন 3-এ স্থানান্তরিত করা প্রয়োজন
  • মডিউল 7: অ্যাপ ইঞ্জিন পুশ টাস্ক সারি (আপনি [পুশ] টাস্ক সারি ব্যবহার করলে প্রয়োজনীয়)
    • মডিউল 1 অ্যাপে অ্যাপ ইঞ্জিন taskqueue পুশ টাস্ক যোগ করে
    • মডিউল 8-এ ক্লাউড টাস্কে মাইগ্রেট করার জন্য ব্যবহারকারীদের প্রস্তুত করে
  • মডিউল 3:
    • ক্লাউড এনডিবি থেকে ক্লাউড ডেটাস্টোরে ডেটাস্টোর অ্যাক্সেসকে আধুনিক করুন
    • এটি পাইথন 3 অ্যাপ ইঞ্জিন অ্যাপ্লিকেশন এবং নন-অ্যাপ ইঞ্জিন অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত লাইব্রেরি
  • মডিউল 6: ক্লাউড ফায়ারস্টোরে মাইগ্রেট করুন
    • Firebase বৈশিষ্ট্যগুলি অ্যাক্সেস করতে ক্লাউড ফায়ারস্টোরে স্থানান্তর করুন৷
    • যদিও ক্লাউড ফায়ারস্টোর পাইথন 2 সমর্থন করে, এই কোডল্যাবটি শুধুমাত্র পাইথন 3 এ উপলব্ধ।

7. অতিরিক্ত সম্পদ

অ্যাপ ইঞ্জিন মাইগ্রেশন মডিউল কোডল্যাব সমস্যা/প্রতিক্রিয়া

আপনি যদি এই কোডল্যাবের সাথে কোনো সমস্যা খুঁজে পান, অনুগ্রহ করে ফাইল করার আগে প্রথমে আপনার সমস্যাটি অনুসন্ধান করুন। অনুসন্ধান এবং নতুন সমস্যা তৈরি করার লিঙ্ক:

মাইগ্রেশন সম্পদ

মডিউল 2 এবং 3 (START) এবং মডিউল 4 (FINISH) এর জন্য রেপো ফোল্ডারগুলির লিঙ্কগুলি নীচের টেবিলে পাওয়া যাবে। এগুলি সমস্ত অ্যাপ ইঞ্জিন কোডল্যাব মাইগ্রেশনের জন্য রেপো থেকে অ্যাক্সেস করা যেতে পারে যা আপনি একটি জিপ ফাইল ক্লোন বা ডাউনলোড করতে পারেন।

কোডল্যাব

পাইথন 2

পাইথন 3

মডিউল 2

কোড

( কোড )

মডিউল 3

( কোড )

কোড

মডিউল 4

কোড

কোড

অ্যাপ ইঞ্জিন এবং ক্লাউড রান সংস্থান

নীচে এই নির্দিষ্ট মাইগ্রেশন সম্পর্কিত অতিরিক্ত সংস্থান রয়েছে: