Spaces:
Sleeping
Sleeping
# ------------------------------------------------------------------- | |
# Dockerfile: Hugging Face Space-এ VS Code (code-server) চালানোর জন্য | |
# লেখক: v0 | |
# উদ্দেশ্য: এটি একটি শিক্ষামূলক Dockerfile যা টেকনোলজি ছাত্রদের জন্য তৈরি। | |
# ------------------------------------------------------------------- | |
# --- ধাপ ১: বেস ইমেজ (Base Image) সেটআপ --- | |
# যেকোনো Dockerfile একটি বেস ইমেজ দিয়ে শুরু হয়। এটি আমাদের অ্যাপ্লিকেশন চালানোর জন্য একটি ভিত্তি বা Operating System প্রদান করে। | |
# এখানে আমরা Python 3.9 ইমেজ ব্যবহার করছি, যা আমাদের প্রয়োজনে Python ব্যবহারের সুযোগ দেবে। | |
FROM python:3.9 | |
# --- ধাপ ২: সিস্টেমের প্রয়োজনীয় প্যাকেজ ইনস্টল করা --- | |
# Hint: একটি ভালো Dockerfile-এ সব সময় সিস্টেম আপডেট করা এবং অপ্রয়োজনীয় ফাইল মুছে ফেলা উচিত, যাতে ইমেজ সাইজ ছোট থাকে। | |
RUN apt-get update && \ | |
apt-get install -y --no-install-recommends \ | |
curl wget gnupg git procps net-tools apt-transport-https ca-certificates \ | |
&& rm -rf /var/lib/apt/lists/* | |
# ব্যাখ্যা: | |
# apt-get update -> প্যাকেজ লিস্ট আপডেট করে। | |
# apt-get install -y -> বিভিন্ন টুলস (যেমন git, curl) ইনস্টল করে যা ডেভেলপমেন্টের জন্য প্রয়োজন। | |
# rm -rf /var/lib/apt/lists/* -> ইনস্টলেশনের পর ক্যাশ (cache) পরিষ্কার করে, যা ফাইনাল ইমেজের আকার কমায়। | |
# --- ধাপ ৩: অ্যাপ্লিকেশন (code-server) ইনস্টল করা --- | |
# Hint: "curl | sh" একটি শক্তিশালী কিন্তু ঝুঁকিপূর্ণ কমান্ড। এটি সরাসরি ইন্টারনেট থেকে একটি স্ক্রিপ্ট ডাউনলোড করে এবং 실행 (execute) করে। | |
# শুধুমাত্র বিশ্বস্ত উৎস (trusted source) থেকেই এই কমান্ড ব্যবহার করা উচিত। | |
RUN curl -fsSL https://code-server.dev/install.sh | sh | |
# ব্যাখ্যা: এই কমান্ডটি code-server (ব্রাউজারে चलने वाला VS Code) ইনস্টল করে। | |
# --- ধাপ ৪: ইউজার এবং ওয়ার্কস্পেস কনফিগারেশন --- | |
# Hint: নিরাপত্তাজনিত কারণে Docker কন্টেইনারে 'root' ইউজার হিসেবে অ্যাপ্লিকেশন চালানো উচিত নয়। | |
# তাই আমরা 'user' নামে একটি নন-রুট ইউজার তৈরি করছি। | |
RUN useradd -m -u 1000 user | |
USER user | |
ENV PATH="/home/user/.local/bin:$PATH" | |
# WORKDIR কমান্ড কন্টেইনারের ভেতর একটি ডিফল্ট ফোল্ডার তৈরি করে এবং সেখানে অবস্থান করে। | |
# এর ফলে পরবর্তী সব কমান্ড (যেমন COPY, CMD) এই ফোল্ডারের সাপেক্ষে কাজ করে। | |
WORKDIR /app | |
# --- ধাপ ৫: প্রোজেক্ট ফাইল যুক্ত করা --- | |
# Hint: Dockerfile-এর পাশে থাকা সব ফাইল ও ফোল্ডারকে COPY কমান্ডের মাধ্যমে কন্টেইনারে যুক্ত করা হয়। | |
# '--chown=user' ফ্ল্যাগ নিশ্চিত করে যে ফাইলগুলোর মালিকানা 'user'-এর কাছে থাকবে। | |
COPY --chown=user . /app | |
# --- ধাপ ৬: অ্যাপ্লিকেশন চালানো এবং পোর্ট এক্সপোজ করা --- | |
# CMD (Command) হলো কন্টেইনার চালু হওয়ার সময় যে কমান্ডটি ডিফল্টভাবে চলবে। | |
# Hint: '--auth none' ব্যবহার করার মানে হলো যে কেউ আপনার VS Code সেশন অ্যাক্সেস করতে পারবে। | |
# এটি ব্যক্তিগত বা গুরুত্বপূর্ণ প্রজেক্টের জন্য একেবারেই নিরাপদ নয়। শুধু শেখার উদ্দেশ্যে এটি ব্যবহার করুন। | |
CMD ["code-server", "--auth", "none", "--bind-addr", "0.0.0.0:7860", "/app"] | |
# ব্যাখ্যা: | |
# --auth none -> কোনো পাসওয়ার্ড ছাড়াই অ্যাক্সেস চালু করে। | |
# --bind-addr 0.0.0.0 -> কন্টেইনারের ভেতরের সব নেটওয়ার্ক ইন্টারফেসে সার্ভারটি শোনার জন্য প্রস্তুত থাকে। | |
# :7860 -> Hugging Face Spaces-এর জন্য নির্ধারিত পোর্ট। | |
# /app -> VS Code চালু হওয়ার পর ডিফল্টভাবে এই ফোল্ডারটি খুলবে। |