Mengintegrasikan PHP dengan Docker adalah cara modern untuk mengelola aplikasi secara portabel dan efisien. Docker memungkinkan Anda membuat lingkungan yang terisolasi, menjadikannya ideal untuk pengembangan, pengujian, dan deployment. Berikut panduan langkah demi langkah untuk integrasi PHP dengan Docker:
1. Persiapan Lingkungan
Pastikan Anda sudah menginstal:
- Docker: Unduh Docker Desktop
- Docker Compose (sudah termasuk dalam Docker Desktop).
2. Struktur Proyek
Buat struktur direktori proyek sebagai berikut:
php-docker-project/
│
├── src/ // Folder kode PHP
│ └── index.php // File utama PHP
├── Dockerfile // File untuk mendefinisikan image Docker
├── docker-compose.yml // File untuk konfigurasi layanan Docker
└── .env // File untuk variabel lingkungan (opsional)
SCSS3. Membuat File Dockerfile
Dockerfile mendefinisikan lingkungan PHP untuk proyek Anda. Berikut contoh Dockerfile untuk PHP:
# Menggunakan image PHP resmi
FROM php:8.2-apache
# Menyalin file proyek ke direktori kerja container
COPY src/ /var/www/html/
# Memberikan izin pada folder
RUN chown -R www-data:www-data /var/www/html \
&& chmod -R 755 /var/www/html
# Install ekstensi PHP tambahan (opsional)
RUN docker-php-ext-install pdo_mysql
# Ekspos port 80 untuk HTTP
EXPOSE 80
Dockerfile4. Membuat File docker-compose.yml
Gunakan Docker Compose untuk mengelola beberapa layanan (misalnya PHP dan database). Berikut contoh file docker-compose.yml
:
version: '3.8'
services:
php:
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:80" # Akses aplikasi pada http://localhost:8080
volumes:
- ./src:/var/www/html
environment:
- APP_ENV=local
db:
image: mysql:8.0
container_name: mysql_db
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: exampledb
MYSQL_USER: user
MYSQL_PASSWORD: password
YAML5. Membuat File PHP (src/index.php)
Buat file PHP untuk memverifikasi apakah server Docker bekerja dengan benar:
<?php
phpinfo();
?>
Haskell6. Menjalankan Proyek
- Build Image dan Jalankan Container: Jalankan perintah berikut di terminal pada direktori proyek:
docker-compose up --build
Bash- Akses Aplikasi: Buka browser dan akses http://localhost:8080. Anda akan melihat halaman
phpinfo()
.
7. Kustomisasi Lingkungan
Menggunakan Variabel Lingkungan (.env)
Gunakan file .env
untuk menyimpan variabel sensitif:
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=exampledb
MYSQL_USER=user
MYSQL_PASSWORD=password
HaskellModifikasi docker-compose.yml
:
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
YAML8. Menambahkan Tools Tambahan
Composer
Untuk menginstal Composer, tambahkan perintah berikut pada Dockerfile:
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
DockerfileXdebug
Untuk debugging dengan Xdebug, tambahkan ke Dockerfile:
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
DockerfileTambahkan konfigurasi Xdebug di php.ini
:
[xdebug]
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
INI9. Workflow Modern
- Hot Reloading: Gunakan
volumes
untuk menyinkronkan perubahan kode tanpa perlu membangun ulang container:
volumes: - ./src:/var/www/html
YAML- CI/CD:
- Gunakan Docker image untuk pipeline CI/CD (misalnya GitHub Actions atau GitLab CI).
- Deploy container ke layanan seperti AWS ECS, Google Cloud Run, atau Kubernetes.
- Scaling: Gunakan Docker Swarm atau Kubernetes untuk deployment skala besar.
10. Membersihkan Container
Untuk menghentikan dan menghapus semua container dan network terkait:
docker-compose down
BashDengan setup ini, Anda memiliki workflow modern yang memanfaatkan Docker untuk PHP. Workflow ini memastikan aplikasi Anda dapat dijalankan di mana saja tanpa khawatir tentang perbedaan lingkungan! 🎉
Leave a Reply