بعد از این درس دقیقاً چه بلدی؟
- موضوع «Image» را با زبان ساده برای فرد دیگری توضیح میدهی.
- مثال همین درس را خطبهخط میخوانی و خروجی آن را پیشبینی میکنی.
- کد را تغییر میدهی، نتیجه یا ساختار آن را بررسی میکنی و خطا را مرحلهای اصلاح میکنی.
کانتینر استاندارد حمل
کالا با بستهبندی یکسان روی کامیونها و کشتیهای مختلف جابهجا میشود؛ محیط برنامه نیز شکل قابل پیشبینی دارد.
Docker محیط اجرا را نسخهپذیر میکند. Multi-stage build ابزار ساخت را از Image نهایی جدا و اجرای non-root و Secret بیرونی سطح حمله را کم میکند.
چرا مهم است؟ این مفهوم یکی از آجرهای مسیر حرفهای PHP است. فعلاً لازم نیست همه جزئیات را حفظ کنی؛ باید دلیل استفاده و اثر هر خط را بفهمی.
اولین تمرین تو: Composer در Stage جدا وابستگی Production را نصب و فقط vendor و Source لازم به Image نهایی منتقل میشوند.
اول بفهم، بعد کد بنویس
Image
قالب تغییرناپذیر فایل و تنظیمات اجراست.
Container
نمونه در حال اجرای Image است.
Multi-stage
وابستگی ساخت را از خروجی سبک Production جدا میکند.
Image برنامه PHP-FPM
Composer در Stage جدا وابستگی Production را نصب و فقط vendor و Source لازم به Image نهایی منتقل میشوند.
قطعهها را به ترتیب درست بچین
روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمههای جابهجایی هم میتوانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.
کد را کامل کن و ساختار آن را بررسی کن
این درس وارد قابلیتهای سروری یا حرفهای شده است. برای امنیت سایت، کد دلخواه روی سرور اجرا نمیشود؛ بررسیگر، وجود اجزای ضروری و منطق مورد انتظار را کنترل میکند و راهنمای اصلاح میدهد.
کد را کامل کن و «بررسی ساختار» را بزن.
این مثال خطبهخط چه میگوید؟
فعلاً حفظ نکن؛ هر خط را به یک جمله ساده تبدیل کن.
- 1
FROM composer:2 AS vendorاین خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 2
WORKDIR /appاین خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 3
COPY composer.json composer.lock ./این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 4
RUN composer install --no-dev --prefer-dist --no-interactionاین خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 5
FROM php:8.5-fpm-alpineاین خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 6
WORKDIR /var/www/appاین خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 7
COPY --from=vendor /app/vendor ./vendorاین خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 8
COPY . .این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 9
USER www-dataاین خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
راهنماییها مرحلهای هستند؛ اول خودت پیام خطا را بخوان.
.dockerignore، Health Check و Cache لایه Composer را تکمیل کن.
از ساده به چالشی، بدون پرش
یکی از مقدارهای مثال را عوض کن، خروجی را روی کاغذ حدس بزن و سپس بررسی کن.
.dockerignore، Health Check و Cache لایه Composer را تکمیل کن.
سناریوی «Image برنامه PHP-FPM» را با نامهای واضحتر و یک حالت تازه گسترش بده.
این سه اشتباه را انجام نده
قرار دادن Secret با ENV در Dockerfile
اجرای Container با root
کپیکردن کل پوشه شامل .git و فایل محلی
5 پرسش کوتاه؛ مطمئن شو واقعاً یاد گرفتهای
برای هر پرسش یک پاسخ انتخاب کن. بعد از هر انتخاب، دلیل پاسخ را همانجا میبینی.
فایده Multi-stage build چیست؟
کدام توضیح، «Image» را دقیقتر بیان میکند؟
بهترین قدم بعد از خواندن مثال این درس چیست؟
کدام روش نشان میدهد این درس را واقعاً فهمیدهای؟
کدام رفتار احتمال خطا را در همین موضوع بیشتر میکند؟
درس را فقط وقتی تمام کن که کد را تغییر دادهای
دیدن آموزش کافی نیست؛ یک مقدار را تغییر بده، خروجی را پیشبینی کن و بعد اجرا بزن.