Spaces:
Sleeping
Sleeping
File size: 5,985 Bytes
e07c2f8 ce99d14 e07c2f8 cf36301 e07c2f8 ce99d14 e07c2f8 ce99d14 e07c2f8 ce99d14 e07c2f8 cf36301 e07c2f8 cf36301 e07c2f8 cf36301 e07c2f8 cf36301 e07c2f8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# -------------------------------------------------------------------
# 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 চালু হওয়ার পর ডিফল্টভাবে এই ফোল্ডারটি খুলবে। |