Mendockerkan Aplikasi PHP
Bina imej Docker untuk PHP + Nginx dan aturkannya dengan Docker Compose.
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/cacheBinaan 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=mysqlPerintah 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:workPemeriksaan 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 1Membina 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.0Penerapan 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?
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
- Konfigurasi Nginx dan PHP-FPM
- Pemboleh Ubah Persekitaran dan Fail .env
- Melaksanakan dengan GitHub Actions
- Mendockerkan Aplikasi PHP