0Pricing
PHP Academy · Pelajaran

Membuat Aplikasi PHP dalam Docker

Buat image Docker untuk PHP + Nginx dan orkestrasikan dengan Docker Compose.

Membuat Aplikasi PHP dalam Docker adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.

Mengapa Docker untuk PHP?

Docker mengemas aplikasi beserta dependensinya ke dalam citra wadah yang portabel. Citra yang sama berjalan secara identik di lingkungan pengembangan, integrasi berkelanjutan, dan produksi—sehingga menghilangkan masalah "berfungsi di mesin saya".

Dockerfile PHP Dasar

Dockerfile minimal 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

Pembangunan Bertahap

Gunakan pembangunan bertahap untuk menjaga ukuran citra akhir tetap kecil—pasang alat pembangunan pada satu tahap, lalu salin hanya artefaknya ke citra 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

Orkestrasikan beberapa layanan, seperti PHP-FPM, Nginx, MySQL, dan 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 Wadah Nginx

Pasang konfigurasi Nginx khusus 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;
    }
}

Variabel Lingkungan

Teruskan variabel lingkungan ke wadah—jangan pernah menanamkan rahasia ke dalam citra.

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

Perintah Artisan Laravel

Jalankan perintah Artisan di dalam wadah.

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

Pemeriksaan Kesehatan

Tambahkan pemeriksaan kesehatan agar alat orkestrasi, seperti Kubernetes dan ECS, mengetahui kapan wadah siap digunakan.

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

Membangun dan Mengirim Citra

Bangun dan kirim citra Anda ke registri, seperti Docker Hub, ECR, atau GHCR.

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

Penerapan Kubernetes

Dalam Kubernetes, definisikan resource Deployment dan Service menggunakan citra Anda. Luncurkan versi baru dengan kubectl set image atau perbarui YAML lalu terapkan.

Penguatan Keamanan Produksi

Praktik Docker untuk produksi: gunakan pengguna non-root, sistem berkas root hanya-baca, citra dasar minimal (Alpine), tanpa dependensi pengembangan, tag citra yang dipatok, dan pindai kerentanan CVE dengan docker scout.

Ringkasan

Buat Dockerfile untuk PHP-FPM + Composer. Gunakan docker-compose untuk pengembangan lokal dengan layanan Nginx, MySQL, dan Redis. Dalam produksi, gunakan pembangunan bertahap, masukkan variabel lingkungan, dan jalankan melalui Kubernetes atau ECS.

Pemeriksaan Singkat

Apa manfaat utama pembangunan Docker secara bertahap?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Membuat Aplikasi PHP dalam Docker” gratis?

Ya — teks lengkap “Membuat Aplikasi PHP dalam Docker” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Membuat Aplikasi PHP dalam Docker”?

Buat image Docker untuk PHP + Nginx dan orkestrasikan dengan Docker Compose. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PHP Academy?

Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Membuat Aplikasi PHP dalam Docker” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Konfigurasi Nginx dan PHP-FPM
  2. Variabel Lingkungan dan File .env
  3. Menerapkan dengan GitHub Actions
  4. Membuat Aplikasi PHP dalam Docker
← Kembali ke PHP Academy