বায়ুপ্রবাহ সেট আপ করার ক্ষেত্রে চ্যালেঞ্জের সম্মুখীন? এখানে সাহায্য!
স্থাপন করা হচ্ছে অ্যাপাচি এয়ারফ্লো একটি উত্তেজনাপূর্ণ কিন্তু দুঃসাধ্য কাজ হতে পারে, বিশেষ করে যখন আপনি ডকার এবং ডকার-কম্পোজের জটিলতায় ডুব দিচ্ছেন। একটি উবুন্টু ভার্চুয়াল মেশিনে এয়ারফ্লো 2.9.2 কনফিগার করার চেষ্টা করার সময় আমি সম্প্রতি একই ধরনের চ্যালেঞ্জের সম্মুখীন হয়েছি। এই সমস্যাগুলি নেভিগেট করার জন্য সমস্যা সমাধানের দক্ষতার মিশ্রণ এবং বিশদে সতর্ক মনোযোগ প্রয়োজন। 🚀
যদিও এয়ারফ্লো-এর মতো একটি শক্তিশালী ওয়ার্কফ্লো অর্কেস্ট্রেশন টুল চালানোর প্রতিশ্রুতি লোভনীয়, ব্যর্থ কন্টেইনার এবং ভুল কনফিগারেশনের মতো ত্রুটিগুলি দ্রুত অগ্রগতিকে লাইনচ্যুত করতে পারে। এই সমস্যাগুলি প্রায়ই ফাইল পাথ, অনুমতি, বা পরিবেশগত ভেরিয়েবলের সূক্ষ্ম ভুল থেকে উদ্ভূত হয়। আমি নিজেকে রহস্যময় লগের দিকে তাকিয়ে থাকতে দেখেছি, যা ভুল হয়েছে তা একত্রিত করার চেষ্টা করছি।
যা এই প্রক্রিয়াটিকে জটিল করে তোলে তা হল ছোট তদারকি, যেমন অনুপযুক্ত ভলিউম মাউন্ট করা বা অনুপস্থিত কনফিগারেশন ফাইল, ক্যাসকেডিং ব্যর্থতার কারণ হতে পারে। উদাহরণস্বরূপ, ফাইল বা ডিরেক্টরি পরিবর্তন করার সময় "অপারেশন অনুমোদিত নয়" এর মতো ত্রুটির সম্মুখীন হওয়া হতাশাজনক এবং ডিবাগ করতে সময়সাপেক্ষ হতে পারে। এটি একটি খাড়া শেখার বক্ররেখা ছিল, কিন্তু এটি আমাকে প্রতিটি বিবরণ যাচাই করার গুরুত্ব শিখিয়েছে।
এই নিবন্ধে, আমি সমস্যা সমাধান এবং সমাধান করার জন্য যে পদক্ষেপগুলি নিয়েছিলাম তা শেয়ার করব ডকার-কম্পোজ এয়ারফ্লো সেটআপ ত্রুটি. আপনি একজন নবাগত হন বা যে কেউ এয়ারফ্লোতে রিভিজিট করছেন, এই অন্তর্দৃষ্টিগুলি আপনাকে সাধারণ সমস্যাগুলি এড়াতে এবং আপনার সিস্টেমকে চালু এবং চালু করতে সহায়তা করবে৷ এর বিস্তারিত মধ্যে ডুব দেওয়া যাক! 💡
আদেশ | ব্যবহারের উদাহরণ |
---|---|
os.makedirs(directory, exist_ok=True) | একটি ডিরেক্টরি তৈরি করে এবং এটি বিদ্যমান নিশ্চিত করে। যদি ডিরেক্টরিটি ইতিমধ্যেই বিদ্যমান থাকে তবে এটি একটি ত্রুটি নিক্ষেপ করে না, এটি সেটআপ স্ক্রিপ্টগুলির জন্য নিরাপদ করে। |
subprocess.run(["chown", "-R", "user:group", directory], check=True) | একটি ডিরেক্টরির মালিকানা বারবার পরিবর্তন করতে একটি শেল কমান্ড কার্যকর করে। চেক=সত্য নিশ্চিত করে যে কমান্ড ব্যর্থ হলে একটি ব্যতিক্রম উত্থাপিত হয়। |
os.stat(directory).st_mode | অনুমতি বিট সহ একটি ফাইল বা ডিরেক্টরির স্থিতি নিয়ে আসে। ডিরেক্টরি অনুমতি যাচাই করার জন্য দরকারী। |
oct() | একটি ফাইলের অনুমতি মোডকে একটি পূর্ণসংখ্যা থেকে একটি অক্টাল স্ট্রিংয়ে রূপান্তর করে, এটি ইউনিক্স-শৈলীর অনুমতিগুলি পড়া সহজ করে তোলে (যেমন, "777")। |
self.subTest(directory=directory) | পরীক্ষাগুলিকে প্যারামিটারাইজ করতে পাইথনের ইউনিটটেস্ট ফ্রেমওয়ার্কে ব্যবহৃত হয়, একটি একক পরীক্ষার ফাংশনের মধ্যে একাধিক পরীক্ষাকে বিভিন্ন ক্ষেত্রে পরীক্ষা করার অনুমতি দেয়। |
RUN pip install -r /tmp/requirements.txt | একটি ডকার কন্টেইনারের মধ্যে একটি requirements.txt ফাইলে তালিকাভুক্ত পাইথন নির্ভরতা ইনস্টল করে। বায়ুপ্রবাহ নির্ভরতা উপস্থিত রয়েছে তা নিশ্চিত করার জন্য গুরুত্বপূর্ণ। |
os.path.exists(directory) | ফাইল সিস্টেমে একটি ডিরেক্টরি বা ফাইল বিদ্যমান কিনা তা পরীক্ষা করে। প্রায়শই প্রয়োজনীয় সেটআপ পদক্ষেপগুলি যাচাই করতে ব্যবহৃত হয়। |
chown -R 1000:0 | ফাইলের মালিকানা বারবার পরিবর্তন করার জন্য একটি লিনাক্স কমান্ড। কনটেইনারাইজড পরিবেশে সঠিক ব্যবহারকারীর দ্বারা ফাইল এবং ডিরেক্টরিগুলি অ্যাক্সেসযোগ্য তা নিশ্চিত করে। |
unittest.main() | পাইথন ইউনিটটেস্ট মডিউলে সংজ্ঞায়িত সমস্ত পরীক্ষার কেস চালায়। নির্বাহের সময় স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে তার যুক্তি পরীক্ষা করে তা নিশ্চিত করে। |
COPY requirements.txt /tmp/requirements.txt | হোস্ট সিস্টেম থেকে কন্টেইনারের ফাইল সিস্টেমে একটি ফাইল অনুলিপি করার জন্য ডকারফাইল কমান্ড। এটি সাধারণত কনফিগারেশন বা নির্ভরতা ফাইল প্রদানের জন্য ব্যবহৃত হয়। |
কাস্টম স্ক্রিপ্ট সহ এয়ারফ্লো সেটআপ আয়ত্ত করা
উপরে প্রদত্ত স্ক্রিপ্টগুলি সেটআপের সময় সম্মুখীন হওয়া সাধারণ সমস্যাগুলির সমাধানের জন্য অপরিহার্য অ্যাপাচি এয়ারফ্লো ব্যবহার করে docker- রচনা. প্রথম স্ক্রিপ্ট হল একটি পাইথন ইউটিলিটি যা নিশ্চিত করার জন্য ডিজাইন করা হয়েছে যে সমস্ত প্রয়োজনীয় এয়ারফ্লো ডিরেক্টরি, যেমন লগ, ড্যাগ এবং প্লাগইন সঠিক মালিকানা এবং অনুমতির সাথে বিদ্যমান। এটি অত্যন্ত গুরুত্বপূর্ণ কারণ এয়ারফ্লো কন্টেইনারগুলি প্রায়ই হোস্ট-মাউন্ট করা ভলিউমগুলি অ্যাক্সেস করতে সমস্যার সম্মুখীন হয় যখন অনুমতিগুলি ভুল কনফিগার করা হয়। সঙ্গে এই প্রক্রিয়া স্বয়ংক্রিয় দ্বারা os.makedirs এবং লিনাক্স chown কমান্ড, স্ক্রিপ্ট সম্ভাব্য ত্রুটিগুলি দূর করে যা অন্যথায় আরম্ভ করার সময় পাত্রে বিপর্যস্ত হতে পারে। 🛠️
আরেকটি গুরুত্বপূর্ণ স্ক্রিপ্ট হল কাস্টম ডকারফাইল। এটি একটি ব্যবহার করে ব্যবহারকারী-নির্দিষ্ট প্রয়োজনীয়তা যোগ করে অফিসিয়াল এয়ারফ্লো ইমেজকে প্রসারিত করে requirements.txt ফাইল এটি নিশ্চিত করে যে আপনার ওয়ার্কফ্লোগুলির জন্য প্রয়োজনীয় যেকোন অতিরিক্ত পাইথন লাইব্রেরিগুলি আগে থেকে ইনস্টল করা আছে। অতিরিক্তভাবে, ডকারফাইল প্রয়োজনীয় ডিরেক্টরি তৈরি করে, যেমন লগ এবং ড্যাগ ফোল্ডার, সরাসরি কন্টেইনারের মধ্যে এবং তাদের অনুমতি সেট করে। এই সক্রিয় সেটআপ রানটাইম ত্রুটিগুলিকে প্রতিরোধ করে, যেমন "FileNotFoundError," যা তখন ঘটতে পারে যখন এয়ারফ্লো অস্তিত্বহীন ডিরেক্টরিগুলিতে লগ লেখার চেষ্টা করে৷ এই সমাধানটি কন্টেইনারাইজেশনের শক্তি প্রদর্শন করে, যেখানে একটি সঠিকভাবে কনফিগার করা ছবি যেকোনো সামঞ্জস্যপূর্ণ পরিবেশে স্থাপনাকে সহজ করে।
ইউনিট পরীক্ষাগুলি এই সেটআপের তৃতীয় অংশ গঠন করে, কনফিগারেশনের নির্ভরযোগ্যতা নিশ্চিত করে। উদাহরণস্বরূপ, স্ক্রিপ্টে এমন পরীক্ষাগুলি অন্তর্ভুক্ত রয়েছে যা ডিরেক্টরিগুলির অস্তিত্ব যাচাই করে এবং তাদের অনুমতিগুলি পরীক্ষা করে। এই পরীক্ষার পদ্ধতিটি শুধুমাত্র প্রাথমিক সেটআপের সময়ই মূল্যবান নয় তবে এয়ারফ্লো স্থাপনার স্কেলিং বা কনফিগারেশন আপডেট করার সময় একটি স্থিতিশীল পরিবেশ বজায় রাখতে সহায়তা করে। একটি বাস্তব-বিশ্বের উদাহরণ হতে পারে যখন একটি ডেটা দল অতিরিক্ত কর্মপ্রবাহ স্বয়ংক্রিয় করতে নতুন DAG যোগ করে। এই পরীক্ষার মাধ্যমে, তারা নিশ্চিত করতে পারে যে পরিবেশটি ম্যানুয়াল পরিদর্শন ছাড়াই প্রস্তুত। ✅
এই স্ক্রিপ্টগুলি একসাথে ব্যবহার করে, ব্যবহারকারীরা হতাশা থেকে উত্পাদনশীলতায় রূপান্তর করতে পারে। আপনার ডিরেক্টরির পাথগুলিতে একটি টাইপো আবিষ্কার করার জন্য কেন Airflow লোড হবে না কেন ডিবাগ করার জন্য ঘন্টা ব্যয় করার কল্পনা করুন৷ এই সরঞ্জামগুলি পরিবেশে কাঠামো এবং পূর্বাভাসযোগ্যতা প্রয়োগ করে এই জাতীয় পরিস্থিতি এড়াতে সহায়তা করে। তদুপরি, স্বয়ংক্রিয় ডিরেক্টরি পরিচালনা এবং কন্টেইনার কাস্টমাইজেশন ডিওঅপস-এ একটি পেশাদার পদ্ধতির প্রতিফলন করে, যা দলের সদস্যদের মধ্যে মসৃণ সহযোগিতা নিশ্চিত করে। আপনি যদি আপনার এয়ারফ্লো যাত্রা শুরু করেন বা আপনার সেটআপ অপ্টিমাইজ করতে চান তবে এই স্ক্রিপ্টগুলি একটি শক্তিশালী ওয়ার্কফ্লো অর্কেস্ট্রেশন সিস্টেমের দিকে আপনার প্রথম পদক্ষেপ। 🚀
অনুমতি এবং পাথ সামঞ্জস্য সহ এয়ারফ্লো ডকার-কম্পোজ ত্রুটিগুলি ঠিক করা
এই সমাধানটি ফাইল পাথে অনুমতি সংক্রান্ত সমস্যা সমাধানের জন্য পাইথন স্ক্রিপ্ট এবং ডকার কনফিগারেশন ব্যবহার করে।
# Python script to adjust ownership of Airflow directories and ensure permissions
import os
import subprocess
# Define paths that Airflow depends on
airflow_directories = [
"/home/indi/airflow/logs",
"/home/indi/airflow/dags",
"/home/indi/airflow/plugins",
"/home/indi/airflow/certs",
"/home/indi/airflow/config",
]
# Adjust permissions and ownership for each directory
def adjust_permissions(directory, user_id, group_id):
try:
print(f"Adjusting permissions for {directory}...")
os.makedirs(directory, exist_ok=True)
subprocess.run(["chown", "-R", f"{user_id}:{group_id}", directory], check=True)
print(f"Permissions adjusted for {directory}.")
except Exception as e:
print(f"Error adjusting permissions for {directory}: {e}")
# User and group IDs
USER_ID = 1000
GROUP_ID = 0
# Execute adjustments
for directory in airflow_directories:
adjust_permissions(directory, USER_ID, GROUP_ID)
print("All directories processed.")
বর্ধিত বৈশিষ্ট্য সহ বায়ুপ্রবাহের জন্য একটি কাস্টম ডকার চিত্র তৈরি করা
এই সমাধানটি প্রাক-ইনস্টল করা নির্ভরতা সহ একটি কাস্টম এয়ারফ্লো ইমেজ তৈরি করতে একটি ডকারফাইল ব্যবহার করে।
# Start with the base Airflow image
FROM apache/airflow:2.9.2
# Upgrade pip to the latest version
RUN pip install --upgrade pip
# Copy custom dependencies file into the container
COPY requirements.txt /tmp/requirements.txt
# Install the custom dependencies
RUN pip install -r /tmp/requirements.txt
# Ensure logs, plugins, and dags directories are present
RUN mkdir -p /home/indi/airflow/logs \\
/home/indi/airflow/plugins \\
/home/indi/airflow/dags
# Set permissions for the Airflow home directory
RUN chown -R 1000:0 /home/indi/airflow
ডিরেক্টরির অনুমতি যাচাই করার জন্য ইউনিট পরীক্ষা
এই ইউনিট পরীক্ষাগুলি নিশ্চিত করে যে প্রয়োজনীয় এয়ারফ্লো ডিরেক্টরিগুলির সঠিক অনুমতি রয়েছে৷
# Unit test script in Python
import os
import unittest
# Define directories to test
directories = [
"/home/indi/airflow/logs",
"/home/indi/airflow/dags",
"/home/indi/airflow/plugins",
"/home/indi/airflow/certs",
"/home/indi/airflow/config",
]
class TestAirflowDirectories(unittest.TestCase):
def test_directories_exist(self):
for directory in directories:
with self.subTest(directory=directory):
self.assertTrue(os.path.exists(directory), f"{directory} does not exist.")
def test_directory_permissions(self):
for directory in directories:
with self.subTest(directory=directory):
permissions = oct(os.stat(directory).st_mode)[-3:]
self.assertEqual(permissions, "777", f"{directory} permissions are not 777.")
if __name__ == "__main__":
unittest.main()
এয়ারফ্লো কনফিগারেশন পিটফলগুলি কাটিয়ে ওঠা
সেট আপ করার সময় অ্যাপাচি এয়ারফ্লো ডকার কম্পোজ ব্যবহার করে, একটি মসৃণ স্থাপনা নিশ্চিত করার জন্য পরিবেশের ভেরিয়েবল এবং কনফিগারেশন ফাইলগুলির ভূমিকা বোঝা অত্যন্ত গুরুত্বপূর্ণ। দ airflow.cfg ডাটাবেস সংযোগ, এক্সিকিউশন অপশন এবং ব্যবহারকারীর প্রমাণীকরণ প্রক্রিয়া সহ এয়ারফ্লো কীভাবে কাজ করে তা নির্ধারণ করার জন্য ফাইলটি কেন্দ্রীয়। এই ফাইলে একটি ভুল পদক্ষেপ, যেমন AIRFLOW_HOME-এর জন্য একটি ভুল পথ, কন্টেইনার স্টার্টআপের সময় ক্যাসকেডিং ত্রুটির কারণ হতে পারে৷ উদাহরণস্বরূপ, যদি লগ ডিরেক্টরিটি সঠিকভাবে নির্দিষ্ট করা না থাকে, তাহলে সময়সূচী বা কর্মী প্রক্রিয়াগুলি ব্যর্থ হতে পারে, কর্মপ্রবাহকে বাধাগ্রস্ত করে। ডাউনটাইম এড়ানোর জন্য এই কনফিগারেশনের যত্ন সহকারে পর্যালোচনা অপরিহার্য।
আরেকটি মূল দিক হল এয়ারফ্লোতে কাস্টম ইমেজ এবং নির্ভরতা ব্যবহার করা। একটি ডকারফাইল ব্যবহার করে, আপনি নির্দিষ্ট কর্মপ্রবাহের জন্য প্রয়োজনীয় অতিরিক্ত লাইব্রেরি অন্তর্ভুক্ত করতে পারেন। এই পদ্ধতিটি প্রতিবার একটি কন্টেইনার শুরু করার সময় প্যাকেজ ইনস্টল করার প্রয়োজনীয়তা দূর করে, সময় এবং সংস্থান উভয়ই সাশ্রয় করে। উদাহরণস্বরূপ, আপনি যদি ডকার ইমেজে এটি সহ পান্ডায় বড় ডেটাসেটগুলি প্রক্রিয়াকরণ করেন তবে আপনার কর্মীরা সর্বদা পদক্ষেপের জন্য প্রস্তুত রয়েছে তা নিশ্চিত করে। উপরন্তু, ডকার কম্পোজ প্রোফাইল ব্যবহার করে সেলারি কর্মীদের পর্যবেক্ষণের জন্য ফ্লাওয়ার বা ডাটাবেস স্টোরেজের জন্য পোস্টগ্রেসের মতো পরিষেবাগুলি পরিচালনা করতে সাহায্য করতে পারে, আপনার সেটআপকে আরও নমনীয় করে তোলে। 💡
ডকার কম্পোজে ভলিউম ম্যাপিংগুলি কীভাবে কাজ করে তা বোঝাও গুরুত্বপূর্ণ। ভুল ম্যাপিং, যেমন হোস্ট পাথের সাথে কন্টেইনার পাথগুলি সারিবদ্ধ না করার ফলে অনুমতি সমস্যা বা অনুপস্থিত ফাইল হতে পারে। আপেক্ষিক পাথ ব্যবহার করা বা কমান্ডের সাথে স্পষ্টভাবে অনুমতি সেট করা chmod এবং chown এই সমস্যাগুলি প্রশমিত করতে সাহায্য করতে পারে। বাস্তব-বিশ্বের পরিস্থিতি, যেমন একাধিক পরিবেশে ডিএজি অর্কেস্ট্রেট করা, ফোল্ডার কাঠামো এবং অনুমতিগুলি সু-সংজ্ঞায়িত হলে বিরামহীন হয়ে যায়। এই সর্বোত্তম অনুশীলনগুলি এয়ারফ্লো স্থাপনাগুলিকে স্থিতিস্থাপক এবং মাপযোগ্য করে তোলে। 🚀
এয়ারফ্লো এবং ডকার সেটআপ সম্পর্কে সাধারণ প্রশ্ন
- কেন আমার এয়ারফ্লো শিডিউল কন্টেইনার শুরু হতে ব্যর্থ হয়?
- এটি প্রায়শই AIRFLOW_HOME এনভায়রনমেন্ট ভেরিয়েবলের ভুল পাথ বা অনুপস্থিত লগ এবং ড্যাগ ডিরেক্টরিগুলির কারণে ঘটে। আপনার কনফিগারেশন ফাইলগুলিতে এই পাথগুলি যাচাই করুন এবং ব্যবহার করুন os.makedirs অনুপস্থিত ডিরেক্টরি তৈরি করতে।
- ডকার ভলিউমগুলিতে আমি কীভাবে অনুমতি সমস্যাগুলি সমাধান করতে পারি?
- ব্যবহার করুন chown এবং chmod সঠিক ব্যবহারকারী মাউন্ট করা ভলিউমগুলির মালিক তা নিশ্চিত করতে আপনার ডকারফাইল বা একটি সেটআপ স্ক্রিপ্টের কমান্ড।
- একটি কাস্টম ডকার ইমেজ ব্যবহার করার সুবিধা কি কি?
- কাস্টম চিত্রগুলি আপনাকে পান্ডা বা SQL ড্রাইভারের মতো নির্ভরতাগুলিকে প্রাক-ইনস্টল করতে দেয়, যা কন্টেইনার শুরু করার সময় সময় বাঁচায় এবং ত্রুটিগুলি হ্রাস করে।
- আমি কীভাবে এয়ারফ্লো ডিএজিগুলি স্থাপন না করে পরীক্ষা করব?
- ব্যবহার করুন airflow dags test স্থানীয়ভাবে ডিএজি এক্সিকিউশন অনুকরণ করার কমান্ড। এটি আপনাকে লাইভ পরিবেশকে প্রভাবিত না করেই ডিবাগ করতে দেয়।
- কেন আমার এয়ারফ্লো ওয়েব সার্ভার অ্যাক্সেসযোগ্য নয়?
- নিশ্চিত করুন যে আপনার ডকার কম্পোজ ফাইলে ম্যাপ করা পোর্টগুলি ইতিমধ্যে ব্যবহারে নেই। উপরন্তু, সম্ভাব্য সমস্যার জন্য ফায়ারওয়াল নিয়ম এবং কন্টেইনার লগ চেক করুন।
বায়ুপ্রবাহের সমস্যা সমাধানের বিষয়ে চূড়ান্ত চিন্তাভাবনা
এয়ারফ্লো সেটআপ ত্রুটিগুলি মোকাবেলা করার জন্য কনফিগারেশন ফাইল, ডকার সেটিংস এবং ফোল্ডার কাঠামোর বিশদগুলিতে মনোযোগ দেওয়া প্রয়োজন। এনভায়রনমেন্ট ভেরিয়েবল এবং ভলিউম অনুমতির মধ্যে সম্পর্ক বোঝার মাধ্যমে, আপনি কার্যকরভাবে সবচেয়ে সাধারণ চ্যালেঞ্জগুলি সমাধান করতে পারেন। ব্যবহারিক উদাহরণ, যেমন মালিকানা পরিবর্তন করা chown, সমস্যা সমাধানের প্রক্রিয়া সহজতর করুন।
আপনার ডকার ইমেজ কাস্টমাইজ করা, প্রয়োজনীয় নির্ভরতা প্রাক-ইনস্টল করা, এবং ইউনিট পরীক্ষা বাস্তবায়ন একটি শক্তিশালী এয়ারফ্লো স্থাপনার জন্য অপরিহার্য। এই পদক্ষেপগুলি মূল্যবান সময় বাঁচানোর সাথে সাথে নির্ভরযোগ্যতা নিশ্চিত করে। এখানে শেয়ার করা অন্তর্দৃষ্টিগুলির সাথে, আপনি আত্মবিশ্বাসের সাথে ত্রুটিগুলি মোকাবেলা করতে এবং আপনার ওয়ার্কফ্লো অর্কেস্ট্রেশন সরঞ্জামগুলির সর্বাধিক ব্যবহার করতে প্রস্তুত থাকবেন। 🚀
বায়ুপ্রবাহের সমস্যা সমাধানের জন্য সংস্থান এবং উল্লেখ
- ডকার কম্পোজের সাথে এয়ারফ্লো সেট আপ এবং কনফিগার করার বিশদ অন্তর্দৃষ্টি অফিসিয়াল এয়ারফ্লো ডকুমেন্টেশন থেকে উল্লেখ করা হয়েছে। এ আরও জানুন অ্যাপাচি এয়ারফ্লো ডকুমেন্টেশন .
- ডকার পাত্রে ফাইল অনুমতি ত্রুটি সমাধানের ব্যবহারিক উদাহরণ ডকার সম্প্রদায় ফোরামে আলোচনা দ্বারা অনুপ্রাণিত হয়েছিল। ভিজিট করুন ডকার কমিউনিটি ফোরাম অতিরিক্ত প্রসঙ্গের জন্য।
- ডকার ইমেজ কাস্টমাইজ করা এবং নির্ভরতা ব্যবস্থাপনার তথ্য ডকার অফিসিয়াল গাইড থেকে নেওয়া হয়েছে। পড়ুন ডকারফাইল সেরা অনুশীলন .
- কন্টেইনারাইজড অ্যাপ্লিকেশনগুলি ডিবাগ করার জন্য এবং রানটাইম ত্রুটিগুলি পরিচালনা করার জন্য সর্বোত্তম অনুশীলনগুলি এখানে উপলব্ধ টিউটোরিয়ালগুলি থেকে নেওয়া হয়েছিল DigitalOcean কমিউনিটি টিউটোরিয়াল .