PHP Academy · Pelajaran

Mendockerkan Aplikasi PHP

Bina imej Docker untuk PHP + Nginx dan aturkannya dengan Docker Compose.

Pelajaran 4 daripada 413 langkah

Mendockerkan Aplikasi PHP ialah pelajaran PHP Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran PHP Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.

Mengapa Docker untuk PHP?

Docker membungkus aplikasi anda bersama kebergantungannya ke dalam imej bekas mudah alih. Imej yang sama berjalan dengan cara yang seragam dalam pembangunan, CI dan produksi — menghapuskan masalah “berfungsi pada mesin saya”.

Dockerfile Asas PHP

Dockerfile minimum untuk aplikasi 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

Binaan Berbilang Peringkat

Gunakan binaan berbilang peringkat untuk memastikan imej akhir kekal kecil — pasang alat binaan dalam satu peringkat dan salin hanya artifak ke imej akhir.

# 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

Atur beberapa perkhidmatan (PHP-FPM, Nginx, MySQL, Redis) dengan 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:

Konfigurasi Bekas Nginx

Pasang konfigurasi Nginx tersuai untuk memproksikan permintaan 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;
    }
}

Pemboleh Ubah Persekitaran

Hantar pemboleh ubah persekitaran kepada bekas — jangan sekali-kali tanam rahsia ke dalam imej.

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

Perintah Laravel Artisan

Jalankan perintah Artisan di dalam bekas.

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

Pemeriksaan Kesihatan

Tambahkan pemeriksaan kesihatan supaya pengatur (Kubernetes, ECS) mengetahui masa bekas sudah bersedia.

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

Membina dan Memuat Naik Imej

Bina dan muat naik imej anda ke registri (Docker Hub, ECR, GHCR).

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

Penerapan Kubernetes

Dalam Kubernetes, takrifkan sumber Deployment dan Service menggunakan imej anda. Lancarkan versi baharu secara berperingkat dengan kubectl set image atau kemas kini YAML dan gunakannya.

Pengerasan untuk Produksi

Amalan Docker untuk produksi: gunakan pengguna bukan root, sistem fail akar baca sahaja, imej asas minimum (Alpine), tiada kebergantungan pembangunan, kunci tag imej dan imbas CVE dengan docker scout.

Ringkasan

Cipta Dockerfile untuk PHP-FPM + Composer. Gunakan docker-compose untuk pembangunan tempatan dengan perkhidmatan Nginx, MySQL dan Redis. Dalam produksi, gunakan binaan berbilang peringkat, suntik pemboleh ubah persekitaran dan jalankan melalui Kubernetes atau ECS.

Semakan Ringkas

Apakah manfaat utama binaan Docker berbilang peringkat?

Percuma untuk bermula

Pelajari PHP dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
49
Pelajaran
195

Soalan Lazim

Adakah pelajaran “Mendockerkan Aplikasi PHP” percuma?

Ya — teks penuh “Mendockerkan Aplikasi PHP” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus PHP Academy, tingkat taraf kepada CoddyKit PRO. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Mendockerkan Aplikasi PHP”?

Bina imej Docker untuk PHP + Nginx dan aturkannya dengan Docker Compose. Anda berlatih PHP Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan PHP Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran PHP Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Mendockerkan Aplikasi PHP” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Konfigurasi Nginx dan PHP-FPM
  2. Pemboleh Ubah Persekitaran dan Fail .env
  3. Melaksanakan dengan GitHub Actions
  4. Mendockerkan Aplikasi PHP
← Kembali ke PHP Academy