- پلتفرم: Udemy
- مدرسها: Rayan Slim, Jad Slim, Houssem Slim
- امتیاز: 4.7/5
- مدت زمان: 05:38:31
- سال انتشار: 2023
- لینک دوره: Docker Bootcamp: Conquer Docker with Real-World Projects
این سند، نکات کلیدی دوره را خلاصه میکند. اگر فرصت دارید، دیدن کامل خود دوره بهشدت توصیه میشود.
- من نکات مهم دورههای مفید را خلاصه میکنم تا بتوانید سریعتر یاد بگیرید و مرور کنید.
- کافی است روی لینکهای
Ask AIکلیک کنید تا در مورد هر مبحثی که میخواهید، عمیقتر کاوش کنید.
Teach Me: 5 Years Old | Beginner | Intermediate | Advanced | (reset auto redirect)
Learn Differently: Analogy | Storytelling | Cheatsheet | Mindmap | Flashcards | Practical Projects | Code Examples | Common Mistakes
Check Understanding: Generate Quiz | Interview Me | Refactor Challenge | Assessment Rubric | Next Steps
دوره با یک نمای کلی شروع میشود: یاد میگیرید چطور اپلیکیشنها و وابستگیهایشان را داخل Docker containerها پکیج کنید، web appها، microserviceها و databaseها را اجرا کنید و در نهایت همهچیز را با Docker Compose اورکِستریت کنید.
ستاره دوره یک اپلیکیشن کامل e-commerce است که از هفت microservice (با زبانهای Python/Flask، Node.js، Java/Spring Boot، Go، Ruby و غیره) تشکیل شده و به شش database مختلف وصل است. در پایان، یک سیستم شبیه دنیای واقعی را containerize کردهاید؛ چیزی شبیه کاری که شرکتهای بزرگ انجام میدهند.
مثال: پروژه نهایی یک فروشگاه آنلاین کامل است که در آن کاربر میتواند ثبتنام کند، محصولات را ببیند، موجودی را مدیریت کند، سفارش ثبت کند و حتی تیکت پشتیبانی باز کند — و همه اینها داخل containerهای ایزوله شده اجرا میشوند.
Ask AI: پروژه e-commerce واقعی با Docker
در این بخش، مخزن (repo) نسبتاً بزرگ منابع دوره را دانلود میکنید، Docker Desktop را نصب میکنید (با توضیح جدا برای Apple Silicon و Intel)، با حساب Docker Hub وارد میشوید، VS Code را نصب میکنید و افزونه رسمی Docker را اضافه میکنید.
مثال: بعد از نصب، Docker Dashboard را باز میکنید و آیکون نهنگ (whale) را میبینید که یعنی Docker engine آماده کار است.
Ask AI: نصب Docker Desktop و افزونه VS Code
مشکل کلاسیک: یک اپ روی لپتاپ دولوپر عالی کار میکند اما در testing یا production به خاطر نبودن یک library، تفاوت نسخه OS یا conflict با processهای دیگر کرش میکند.
Virtual Machineها مشکل isolation را حل کردند اما سنگین هستند (هر VM یک OS کامل دارد). Docker containerها kernel سیستمعامل میزبان را بهاشتراک میگذارند، در عرض چند میلیثانیه بالا میآیند و منابع خیلی کمتری مصرف میکنند.
مثال: روی یک سرور میتوانید صدها یا حتی هزاران container اجرا کنید، در حالی که فقط چند VM میتوانید بالا بیاورید — به همین خاطر است که شرکتهایی مثل Netflix، Spotify و PayPal کاملاً روی containerها سرمایهگذاری کردهاند.
Ask AI: چرا بهجای VM از Docker استفاده کنیم
در این قسمت workflow اصلی docker run را یاد میگیرید: یک image رسمی را pull میکنید، با -v کدتان را mount میکنید و app را اجرا میکنید. برای Python، Java، Go، Ruby و … همین روال را دارید و نیازی نیست چیزی را روی لپتاپتان نصب کنید.
مثال:
docker run --rm --name python-container -v "/absolute/path/to/code":/app python:3.8-slim python /app/pythonapp.pyبرای تنظیم environment variableها مثل مثال Go، میتوانید -e MESSAGE="Hello from Docker" اضافه کنید یا مثل مثال Python، argumentهای خط فرمان را پاس بدهید.
Ask AI: docker run، volumeها و environment variableها
بهجای اینکه هر بار یک دستور طولانی docker run بنویسید، یک Dockerfile (با دستورهای FROM، WORKDIR، COPY، CMD) مینویسید و یک image قابلاستفادهمجدد میسازید.
مثال Dockerfile برای یک اپ Python:
FROM python:3.8-slim
WORKDIR /app
COPY . .
CMD ["python", "pythonapp.py"]بعد:
docker build -t mypythonapp:1.0 .
docker run --rm mypythonapp:1.0همچنین .dockerignore، multi-stage buildها و اینکه چرا slim imageها ترجیح داده میشوند هم توضیح داده میشود.
Ask AI: نوشتن Dockerfile و best practiceها
اینجا دهها دستور جداگانه docker run را با یک فایل docker-compose.yml جایگزین میکنید. توی این فایل serviceها، portها، environment variableها، volumeها و depends_on را تعریف میکنید.
مثال: یک پورتال ثبت نمره (grade-submission portal) داریم که از Flask frontend + Node API + MongoDB تشکیل شده و همگی با یک دستور docker compose up بالا میآیند و با docker compose down بهصورت تمیز خاموش میشوند.
Ask AI: Docker Compose برای اپهای چند containerی
یاد میگیرید چطور خیلی سریع databaseهای در حد production بالا بیاورید. imageهای رسمی همهچیز را هندل میکنند؛ فقط کافی است environment variableهای درست را پاس بدهید.
مثال کانفیگ MongoDB با data persistent:
mongo:
image: mongo:latest
container_name: mongo
volumes:
- mongo-data:/data/dbAsk AI: اجرای MongoDB، MySQL و PostgreSQL در Docker
دادههای database وقتی container متوقف میشود از بین میروند — مگر اینکه از named volume استفاده کنید. مسیرهایی مثل /var/lib/mysql یا /data/db را به یک volume mount میکنید تا دادهها بعد از docker compose down/up هم باقی بمانند.
مثال: حتی بعد از اینکه همه containerها را کامل پاک کردید، وقتی دوباره وارد اپ e-commerce میشوید، سفارشهای قدیمی و اکانتهای کاربریتان هنوز وجود دارند.
Ask AI: Docker volumeها و persistence داده
اینجا با docker tag و docker push تمرین میکنید، semantic versioning (مثل 1.0.0 → 2.0.0 بعد از اضافه کردن databaseها) را یاد میگیرید و میبینید چطور README خوبی بنویسید که هر کسی بتواند imageهایتان را pull و اجرا کند.
مثال: بعد از اینکه برای MongoDB، persistence اضافه کردید، نسخه را به 2.0.0 tag میزنید، push میکنید و بعد فایلهای Compose را طوری آپدیت میکنید که از yourusername/service:2.0.0 استفاده کنند.
Ask AI: push کردن به Docker Hub و versioning imageها
در پایان همهچیز را کنار هم قرار میدهید: serviceهای Flask، Node، Spring Boot، Go و Ruby که هر کدام به یک database جدا (چهار Mongo، یک MySQL و یک PostgreSQL) وصل هستند. همه اینها با یک فایل Compose، environment variableها برای ارتباط بین serviceها، volumeهای persistent و imageهایی که روی Docker Hub push کردهاید، مدیریت میشوند.
مثال: وقتی یک سفارش ثبت میکنید، موجودی (inventory) کم میشود، سفارش در سرویس مدیریت سفارشها ظاهر میشود و سرویس shipping هم نوتیفای میشود — همهچیز بین زبانها و databaseهای مختلف، هماهنگ و همگام میماند.
Ask AI: پروژه microservice e-commerce با Docker
من Ali Sol هستم، Backend Developer. اطلاعات بیشتر:
- وبسایت: alisol.ir
- لینکدین: linkedin.com/in/alisolphp