0Pricing
PHP Academy · درس

إنشاء حاويات لتطبيق PHP

أنشئوا صورة Docker لـ PHP وNginx ونظّموا الخدمات باستخدام Docker Compose

إنشاء حاويات لتطبيق PHP درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.

لماذا Docker مع PHP؟

Docker يضم تطبيقك واعتمادياته في صورة حاوية قابلة للنقل. وتعمل الصورة نفسها بالطريقة ذاتها في التطوير والتكامل المستمر والإنتاج، ما يلغي مشكلات «يعمل على جهازي».

Dockerfile أساسي لـ PHP

Dockerfile أدنى لتطبيق PHP مع Nginx.

# Dockerfile
FROM php:8.3-fpm-alpine

# Install extensions
RUN docker-php-ext-install pdo pdo_mysql opcache

# Install Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader

COPY . .

RUN chown -R www-data:www-data /app/storage /app/bootstrap/cache

البناء متعدد المراحل

استخدم عمليات البناء متعددة المراحل للحفاظ على صغر حجم الصورة النهائية — ثبّت أدوات البناء في مرحلة، وانسخ الملفات الناتجة فقط إلى الصورة النهائية.

# Stage 1: builder
FROM composer:2 AS builder
WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader

# Stage 2: runtime
FROM php:8.3-fpm-alpine
WORKDIR /app
COPY --from=builder /app/vendor ./vendor
COPY . .

docker-compose.yml

نسّق خدمات متعددة، مثل PHP-FPM وNginx وMySQL وRedis، باستخدام Docker Compose.

# docker-compose.yml
services:
  app:
    build: .
    volumes:
      - .:/app
  nginx:
    image: nginx:alpine
    ports: ["80:80"]
    volumes:
      - .:/app
      - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
  mysql:
    image: mysql:8
    environment:
      MYSQL_DATABASE: myapp
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - db_data:/var/lib/mysql
  redis:
    image: redis:alpine
volumes:
  db_data:

إعداد Nginx داخل الحاوية

اربط إعداد Nginx مخصصًا لتمرير طلبات PHP-FPM كوكيل.

# docker/nginx.conf
server {
    listen 80;
    root /app/public;
    index index.php;
    location / { try_files $uri /index.php?$query_string; }
    location ~ \.php$ {
        fastcgi_pass app:9000;  # service name from docker-compose
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

متغيرات البيئة

مرّر متغيرات البيئة إلى الحاويات — ولا تضمّن الأسرار داخل الصور أبدًا.

# docker-compose.yml:
services:
  app:
    env_file: .env
    # or explicit:
    environment:
      - APP_ENV=production
      - DB_HOST=mysql

أوامر Laravel Artisan

شغّل أوامر Artisan داخل الحاوية.

$ docker compose exec app php artisan migrate
$ docker compose exec app php artisan config:cache
$ docker compose exec app php artisan queue:work

فحوصات السلامة

أضف فحوصات للسلامة حتى تعرف أدوات التنسيق، مثل Kubernetes وECS، متى أصبحت الحاوية جاهزة.

# Dockerfile:
HEALTHCHECK --interval=30s --timeout=5s \
  CMD curl -f http://localhost/health || exit 1

بناء الصور ودفعها

ابنِ صورتك وادفعها إلى سجل، مثل Docker Hub أو ECR أو GHCR.

$ docker build -t myorg/myapp:1.0.0 .
$ docker push myorg/myapp:1.0.0

نشر Kubernetes

في Kubernetes، عرّف موردي Deployment وService باستخدام صورتك. واطرح الإصدارات الجديدة باستخدام kubectl set image أو حدّث YAML ثم طبّقه.

تقوية بيئة الإنتاج

ممارسات Docker في بيئة الإنتاج: استخدم مستخدمًا غير root، ونظام ملفات جذريًا للقراءة فقط، وصورة أساسية minimal مثل Alpine، ومن دون اعتماديات التطوير، وثبّت وسوم الصور، وافحص الثغرات CVE باستخدام docker scout.

الملخص

أنشئ Dockerfile لـ PHP-FPM وComposer. استخدم docker-compose للتطوير المحلي مع خدمات Nginx وMySQL وRedis. وفي بيئة الإنتاج، استخدم عمليات بناء متعددة المراحل، وحقن متغيرات البيئة، وشغّل التطبيق عبر Kubernetes أو ECS.

تحقق سريع

ما الفائدة الرئيسية من عمليات بناء Docker متعددة المراحل؟

الأسئلة الشائعة

هل درس «إنشاء حاويات لتطبيق PHP» مجاني؟

نعم — نص درس «إنشاء حاويات لتطبيق PHP» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.

ماذا ستتعلم في «إنشاء حاويات لتطبيق PHP»؟

أنشئوا صورة Docker لـ PHP وNginx ونظّموا الخدمات باستخدام Docker Compose تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟

لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «إنشاء حاويات لتطبيق PHP»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟

نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تهيئة Nginx وPHP-FPM
  2. متغيرات البيئة وملفات .env
  3. النشر باستخدام GitHub Actions
  4. إنشاء حاويات لتطبيق PHP
← العودة إلى PHP Academy