{"id":32692678,"url":"https://github.com/ierfanfahruddin/docker-php-stack","last_synced_at":"2026-04-14T05:33:47.539Z","repository":{"id":321888902,"uuid":"1087532433","full_name":"ierfanfahruddin/docker-php-stack","owner":"ierfanfahruddin","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-01T05:37:44.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-11-01T07:20:17.012Z","etag":null,"topics":["development","docker","docker-compose","local-env","multi-php","mysql","nginx","php","php-fpm","postgresql"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ierfanfahruddin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-01T05:16:32.000Z","updated_at":"2025-11-01T05:41:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ierfanfahruddin/docker-php-stack","commit_stats":null,"previous_names":["ierfanfahruddin/docker-php-stack"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ierfanfahruddin/docker-php-stack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ierfanfahruddin%2Fdocker-php-stack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ierfanfahruddin%2Fdocker-php-stack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ierfanfahruddin%2Fdocker-php-stack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ierfanfahruddin%2Fdocker-php-stack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ierfanfahruddin","download_url":"https://codeload.github.com/ierfanfahruddin/docker-php-stack/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ierfanfahruddin%2Fdocker-php-stack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31784253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["development","docker","docker-compose","local-env","multi-php","mysql","nginx","php","php-fpm","postgresql"],"created_at":"2025-11-01T16:01:47.825Z","updated_at":"2026-04-14T05:33:47.534Z","avatar_url":"https://github.com/ierfanfahruddin.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Laravel Filament dengan Apache\n\nProyek ini adalah contoh konfigurasi untuk menjalankan aplikasi Laravel Filament menggunakan Apache sebagai pengganti Nginx, dengan dukungan untuk beberapa versi PHP.\n\n## Daftar Isi\n\n- [Prasyarat](#prasyarat)\n- [Instalasi](#instalasi)\n- [Menjalankan Aplikasi](#menjalankan-aplikasi)\n- [Struktur Direktori](#struktur-direktori)\n- [Menjalankan Proyek Baru](#menjalankan-proyek-baru)\n- [Konfigurasi Apache](#konfigurasi-apache)\n- [Konfigurasi Environment](#konfigurasi-environment)\n- [Docker Compose](#docker-compose)\n- [Perintah Umum](#perintah-umum)\n- [Penyelesaian Masalah](#penyelesaian-masalah)\n- [Lisensi](#lisensi)\n\n## Prasyarat\n\nSebelum memulai, pastikan Anda telah menginstal:\n\n- Docker\n- Docker Compose\n\n## Instalasi\n\n1. Clone repository ini ke direktori lokal Anda:\n   ```bash\n   git clone \u003curl-repository\u003e laravel-filament-apache\n   cd laravel-filament-apache\n   ```\n\n2. Pastikan Docker dan Docker Compose telah terinstal di sistem Anda.\n\n## Menjalankan Aplikasi\n\n1. Jalankan layanan dengan perintah:\n   ```bash\n   docker compose -f docker-compose-apache.yml up -d\n   ```\n\n2. Tunggu beberapa saat hingga semua layanan berjalan.\n\n3. Akses aplikasi di browser Anda melalui:\n   - `http://localhost:8080/` untuk aplikasi Laravel Filament\n   - `http://project-a.localhost:8080/` untuk contoh proyek A\n   - `http://project-b.localhost:8080/` untuk contoh proyek B\n   - `http://php7.localhost:8080/sample/` untuk contoh proyek PHP 7.4\n   - `http://php8.localhost:8080/sample/` untuk contoh proyek PHP 8.3\n\n4. Untuk menghentikan layanan:\n   ```bash\n   docker compose -f docker-compose-apache.yml down\n   ```\n\n## Struktur Direktori\n\n```\n.\n├── apache/\n│   ├── httpd.conf          # Konfigurasi utama Apache\n│   └── vhosts/\n│       ├── laravel.conf    # Virtual host untuk aplikasi Laravel\n│       ├── php7.conf       # Virtual host untuk proyek PHP 7.4\n│       ├── php8.conf       # Virtual host untuk proyek PHP 8.3\n│       ├── project_a.conf  # Virtual host untuk proyek A\n│       └── project_b.conf  # Virtual host untuk proyek B\n├── docker-compose-apache.yml  # Konfigurasi Docker Compose\n├── php-83-fpm/\n│   └── Dockerfile          # Konfigurasi PHP 8.3 FPM\n├── php-74-fpm/\n│   └── Dockerfile          # Konfigurasi PHP 7.4 FPM\n├── www/\n│   ├── laravel/            # Aplikasi Laravel Filament\n│   ├── project_a/          # Contoh proyek sederhana\n│   ├── project_b/          # Contoh proyek dengan koneksi database\n│   ├── php7/               # Direktori untuk proyek PHP 7.4\n│   │   └── sample/         # Contoh proyek PHP 7.4\n│   └── php8/               # Direktori untuk proyek PHP 8.3\n│       └── sample/         # Contoh proyek PHP 8.3\n└── ...\n```\n\n## Menjalankan Proyek Baru\n\nUntuk menambahkan proyek baru:\n\n1. **Untuk proyek yang membutuhkan PHP 7.4**:\n   - Letakkan file proyek Anda di direktori `www/php7/nama-proyek/`\n   - Akses proyek melalui `http://php7.localhost:8080/nama-proyek/`\n\n2. **Untuk proyek yang membutuhkan PHP 8.3**:\n   - Letakkan file proyek Anda di direktori `www/php8/nama-proyek/`\n   - Akses proyek melalui `http://php8.localhost:8080/nama-proyek/`\n\n3. **Untuk proyek khusus (seperti Laravel Filament)**:\n   - Buat direktori baru di `www/` dengan nama proyek Anda\n   - Tambahkan konfigurasi virtual host baru di `apache/vhosts/`\n   - Sesuaikan konfigurasi `docker-compose-apache.yml` jika diperlukan\n   - Akses proyek melalui URL yang telah dikonfigurasi\n\nTidak perlu konfigurasi tambahan untuk setiap proyek baru selama mengikuti struktur yang telah disediakan.\n\n## Konfigurasi Apache\n\nKonfigurasi Apache telah dioptimalkan untuk aplikasi Laravel Filament dengan:\n\n- Virtual host khusus untuk aplikasi laravel\n- Pengaturan rewrite rules yang sesuai untuk Laravel\n- Konfigurasi PHP-FPM yang terintegrasi\n- Penanganan khusus untuk direktori Livewire dan Filament\n- Virtual host terpisah untuk proyek PHP 7.4 dan 8.3\n\n## Konfigurasi Environment\n\nFile `.env` berisi konfigurasi untuk database MySQL dan PostgreSQL:\n\n```env\n# --- MySQL Credentials ---\nMYSQL_DATABASE=db_mysql\nMYSQL_USER=root # Atau user lain yang Anda inginkan\nMYSQL_PASSWORD=password # \u003c-- Isi password\nMYSQL_ROOT_PASSWORD=root_password # \u003c-- Isi password root\n\n# --- PostgreSQL Credentials ---\nPOSTGRES_DB=db_postgre\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=postgres\n```\n\nPastikan untuk mengganti password dengan yang lebih aman sebelum menjalankan aplikasi di lingkungan produksi.\n\n## Docker Compose\n\nFile `docker-compose-apache.yml` mendefinisikan layanan berikut:\n\n- **apache**: Web server Apache 2.4\n- **php-83-fpm**: PHP 8.3 FPM\n- **php-74-fpm**: PHP 7.4 FPM\n- **db-mysql**: Database MySQL 8.0\n- **db-postgre**: Database PostgreSQL 13\n\nSetiap layanan telah dikonfigurasi dengan volume dan port yang sesuai untuk pengembangan lokal.\n\n## Perintah Umum\n\n### Masuk ke container PHP FPM:\n\n```bash\n# Untuk PHP 8.3\ndocker compose -f docker-compose-apache.yml exec php-83-fpm sh\n\n# Untuk PHP 7.4\ndocker compose -f docker-compose-apache.yml exec php-74-fpm sh\n```\n\n### Backup dan Restore Database PostgreSQL:\n\nProses ini terdiri dari dua langkah utama: menyalin file backup ke dalam kontainer, lalu menjalankan restore.\n\n1. **Salin file backup ke dalam kontainer**:\n   Gunakan `docker cp` untuk menyalin file `.sql` atau `.backup` dari komputer Anda ke direktori `/tmp` di dalam kontainer.\n   ```bash\n   # Ganti /path/to/your/nama_file.sql dengan lokasi file Anda\n   docker cp /path/to/your/nama_file.sql db-postgre-13:/tmp/nama_file.sql\n   ```\n\n2. **Jalankan perintah restore**:\n   Gunakan `docker exec` untuk menjalankan `psql` di dalam kontainer, menunjuk ke file yang baru saja Anda salin.\n   ```bash\n   # Pastikan database 'nama_db' sudah dibuat sebelumnya\n   docker exec -it db-postgre-13 psql -U postgres -d nama_db -f /tmp/nama_file.sql\n   ```\n\n3. (Opsional) Hapus file backup dari kontainer:\n\nSetelah proses restore selesai, Anda bisa menghapus file backup dari direktori `/tmp` di dalam kontainer untuk menghemat ruang.\n```bash\ndocker exec -it db-postgre-13 rm /tmp/nama_file.sql\n```\n\n### Melihat log container:\n\n```bash\n# Melihat log Apache\ndocker compose -f docker-compose-apache.yml logs apache\n\n# Melihat log PHP FPM\ndocker compose -f docker-compose-apache.yml logs php-83-fpm\n\n# Melihat log database\ndocker compose -f docker-compose-apache.yml logs db-mysql\ndocker compose -f docker-compose-apache.yml logs db-postgre\n```\n\n## Penyelesaian Masalah\n\nJika mengalami error 405 Method Not Allowed:\n\n1. Pastikan file `.env` di direktori aplikasi Laravel sudah dikonfigurasi dengan benar\n2. Periksa konfigurasi session di `config/session.php`\n3. Verifikasi bahwa CSRF token disertakan dalam request POST/PUT/PATCH/DELETE\n4. Cek log Apache untuk informasi lebih detail tentang error\n\nJika mengalami masalah koneksi seperti \"refused to connect\":\n\n1. Pastikan semua layanan Docker berjalan dengan perintah `docker compose -f docker-compose-apache.yml up -d`\n2. Gunakan format URL yang benar: `http://[nama-virtual-host]:8080/` karena semua layanan dijalankan melalui port 8080\n3. Periksa file hosts sistem Anda jika perlu menambahkan entri untuk virtual host\n\n## Lisensi\n\nProyek ini dilisensikan di bawah [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fierfanfahruddin%2Fdocker-php-stack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fierfanfahruddin%2Fdocker-php-stack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fierfanfahruddin%2Fdocker-php-stack/lists"}